http://laravel.com/docs/4.2/eloquent#dynamic-propertiesNhiều cuộc gọi đến thuộc tính động Eloquent có nhấn cơ sở dữ liệu nhiều lần không?
class Phone extends Eloquent {
public function user()
{
return $this->belongsTo('User');
}
}
$phone = Phone::find(1);
Bây giờ, nếu tôi sau đó làm một cái gì đó như thế này:
echo $phone->user->email;
echo $phone->user->name;
echo $phone->user->nickname;
Will hùng biện thực hiện cuộc gọi cơ sở dữ liệu cho mỗi lần tôi sử dụng ->user
sở hữu động? Hoặc là đủ thông minh để bộ nhớ cache người dùng trên cuộc gọi đầu tiên?
Một lần lặp sẽ thực hiện cuộc gọi cho 'Phone' và 'User'. Nhiều lần lặp lại bạn phải tải mong muốn. http://laravel.com/docs/5.0/eloquent#eager-loading – user2094178
http://laravel.com/docs/4.2/eloquent#eager-loading – user2094178
Tôi tin rằng tham chiếu đầu tiên cho '$ phone-> user' sẽ tải mô hình 'Người dùng' hoàn chỉnh với tất cả thuộc tính cục bộ cho mô hình đó. Giả sử rằng 'email',' name' và 'nickname' được lưu trữ trong' Người dùng', thì điều này sẽ chỉ dẫn đến hai truy vấn cơ sở dữ liệu (một cho điện thoại, một truy vấn khác cho người dùng). Hãy dùng thử: sau các câu lệnh này, hãy chạy 'dd (\ DB :: getQueryLog())' để xem các truy vấn chính xác được thực hiện. – bishop