http://laravel.com/docs/4.2/eloquent#dynamic-propertiesCzy wielokrotne wywołania do Wymownej właściwości dynamicznej trafią do bazy danych wiele razy?
class Phone extends Eloquent {
public function user()
{
return $this->belongsTo('User');
}
}
$phone = Phone::find(1);
Teraz, gdybym wtedy coś takiego:
echo $phone->user->email;
echo $phone->user->name;
echo $phone->user->nickname;
Will Eloquent nawiązać połączenie z bazą danych za każdym razem używam własności dynamiczne na ->user
? Czy jest to wystarczająco inteligentne, aby buforować użytkownika podczas pierwszego połączenia?
Jedna iteracja będzie zatelefonować do 'Phone' i' użytkownik portu. Wielokrotne iteracje trzeba bardzo szybko załadować. http://laravel.com/docs/5.0/eloquent#eager-loading – user2094178
http://laravel.com/docs/4.2/eloquent#eager-loading – user2094178
Wierzę, że pierwsze odniesienie do '$ phone-> user' załaduje model 'User' kompletny ze wszystkimi atrybutami lokalnymi dla tego modelu. Zakładając, że 'email',' name' i 'nickname' są przechowywane w' User', to spowoduje to tylko dwa zapytania do bazy danych (jeden dla telefonu, drugi dla użytkownika). Wypróbuj: po tych instrukcjach uruchom 'dd (\ DB :: getQueryLog())', aby zobaczyć dokładnie wykonane zapytania. – bishop