http://laravel.com/docs/4.2/eloquent#dynamic-properties多次調用Eloquent動態屬性是否會多次訪問數據庫?
class Phone extends Eloquent {
public function user()
{
return $this->belongsTo('User');
}
}
$phone = Phone::find(1);
現在,如果我那麼做這樣的事情:
echo $phone->user->email;
echo $phone->user->name;
echo $phone->user->nickname;
威爾洋洋灑灑做一個數據庫調用的每一次我使用->user
動態屬性?或者這足夠聰明,可以在第一次通話時緩存用戶?
一次迭代將對'Phone'和'User'通話。多次迭代你必須急切加載。 http://laravel.com/docs/5.0/eloquent#eager-loading – user2094178 2015-02-11 04:23:48
http://laravel.com/docs/4.2/eloquent#eager-loading – user2094178 2015-02-11 04:24:35
我相信對'$ phone-> user'的第一個引用將加載具有該模型本地所有屬性的「用戶」模型。假定'email','name'和'nickname'存儲在'User'中,那麼這將導致只有兩個數據庫查詢(一個用於電話,另一個用於用戶)。試試看:在這些語句之後,運行dd(\ DB :: getQueryLog())來查看所做的確切查詢。 – bishop 2015-02-11 04:27:26