2015-01-29 2 views
0

Я загрузил данные, но когда я использую атрибут $ object->, он снова извлекает данные из базы данных.Eager loading not working - Laravel

Мой запрос:

$user = User::with([ 'Comment' => function($query){ $query->where('active', 1); $query->with('CommentReply.User'); $query->orderBy('updated_at', 'desc'); } ]);

Но когда я использую $ user-> комментарий затем снова загрузит все комментарии, что приводит к N + 1 проблема. Любая причина, почему это происходит? Заранее спасибо.

ответ

1

Все работает отлично, просто придерживаться одной конвенции:

$user = User::with([ 
      'comment' => function($query){ 
       $query->where('active', 1); 
       $query->with('CommentReply.User'); 
       $query->orderBy('updated_at', 'desc'); 
      } 
]); 

//then 
$user->comment 

или

$user = User::with([ 
      'Comment' => function($query){ 
       $query->where('active', 1); 
       $query->with('CommentReply.User'); 
       $query->orderBy('updated_at', 'desc'); 
      } 
]); 

//then 
$user->Comment 

Уведомление письмо корпус.

Также обратите внимание, что $comment->commentReply->user будет делать то же самое, поэтому вам необходимо позвонить $comment->CommentReply->User.