带有嵌套关系的 Laravel 急切加载

Posted

技术标签:

【中文标题】带有嵌套关系的 Laravel 急切加载【英文标题】:Laravel eager loading with nested relationship 【发布时间】:2015-08-16 02:22:27 【问题描述】:

我知道有人问过这个问题,但我的情况不同。 我定义了与评论模型有关系的 Post 模型:

/*Post Model*/
public function comments()
return $this->hasMany('comment');

和评论模型,每个评论属于一个用户: /评论模型/

public function user()
return $this->belongto('user');

现在我想查询所有帖子和急切加载 cmets(每个帖子的)以及发布评论的用户信息。 无论如何让它工作好吗? 谢谢。

【问题讨论】:

【参考方案1】:

你想要的是嵌套的eager loading,向下滚动一下就可以看到了。

引用文档:

要急切加载嵌套关系,您可以使用“点”语法。为了 例如,让我们急切地加载这本书的所有作者和所有 一篇 Eloquent 声明中的作者个人联系方式:

$books = Book::with('author.contacts')->get();

你的情况

$posts = Post::with('comments.user')->get();

【讨论】:

感谢您的回复,正是我想要的。

以上是关于带有嵌套关系的 Laravel 急切加载的主要内容,如果未能解决你的问题,请参考以下文章

laravel eloquent - 在嵌套急切加载的关系上不使用

Laravel 混合获取 Eloquent 急切加载嵌套多个模型

laravel 嵌套急切加载获取和第一个函数

使用 Laravel 将两个模型合并到一个分页查询中,并带有急切加载的关系

Laravel 使用自定义查询预加载嵌套关系

Laravel 5.4急切加载belongsToMany关系null绑定