Zi 字媒體
2017-07-25T20:27:27+00:00
Eloquent Eager loading
PHP:7.2
Laravel:5.7
在 Eloquent 中,可以透過 Model 的 Relationships 取得不同 Table 之間對應的資料。
而取得的方式又細分為兩種:Eager loading、Lazy Eager loading 模式。
Eager loading – with()
這是最廣泛使用的方法,就是在拿資料時,透過 with(),一次把關聯的資料全部拉出來。
範例
$albums = Album::with(['songs'])->limit(10)->get();
使用 with 會執行以下 SQL query:
select * from `album` where `album`.`deleted_at` is null
select * from `song` where `song`.`album_id` in (1, 2, 3, 4, 5) and `song`.`deleted_at` is null
Lazy Eager loading – load()
當不是所有資料都需要把關聯資料取出來時,考量到不必要的效能花費,可以使用 load() 方法,真正需要時才去 DB 拿關聯資料。
範例
$albums = Album::all();
if ($someCondition) {
$albums->load('song');
}
如果沒有進入條件判斷式,只會執行以下 SQL query:
select * from `album` where `album`.`deleted_at` is null
Categories: Laravel
Tags: LaravelPHP
分類
Android
AngularJS
Chrome
Database
MySQL
DataStructure
Editor
Vim
Firefox
Git
Hadoop
Language
Go
Java
JavaScript
jQuery
jQueryChart
Node.js
Vue
PHP
Laravel
ZendFramework
Python
Mac
Network
Cisco
DLink
Juniper
Oauth
Server
Apache
Share
Unix
FreeBSD
Linux
WebDesign
Bootstrap
CSS
HTML
Wordpress
Search
搜尋:
寫了
5860316篇文章,獲得
23313次喜歡