2015-06-26 2 views
1

Можно ли разделить вложенный ленивый метод загрузки?Laravel 5.1> split nested lazy loading

I've получил

$this->user->load('latestConversations.latestMessage.user') 

также как я бы загрузить все пользователи, назначенные latestConversations так что-то вроде этого было бы неплохо:

$this->user->load('latestConversations.['users', 'latestMessage.user']') 

Вот обходной путь

$this->user->load('latestConversations.latestMessage.user') 
$this->user->load('latestConversations.users') 

Но затем последние запросы отправляются два раза.

ответ

2

Если вы оставите круглые скобки по методу отношений, вы можете просто добавить все, что хотите к запросу, а затем вручную установить отношение, используя setRelation(). Я не тестировал его, но что-то вроде этого должно работать:

$latestConversations = $this->user 
          ->latestConversations() 
          ->with('latestMessage.user', 'users') 
          ->get(); 
$this->user->setRelation('latestConversations', $latestConversations); 

// then you should be able to just access it normally: 
return $this->user->latestConversations; 
+0

работал как шарм. Я даже не использовал setRelation, потому что lastConversations все еще было связано с пользовательской моделью через attribToMany(). Спасибо друг. – Kristo