Laravel 5.1 > 拆分嵌套延迟加载

Laravel 5.1 > split nested lazy loading

是否可以拆分嵌套的懒加载方式?

我有

$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')

但是后来latestConversations被查询了两次。

如果您在关系方法上留下括号,您可以添加任何您想要的查询,然后使用 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;