Laravel 5.4 - 如何对急切加载关系进行分页

Posted

技术标签:

【中文标题】Laravel 5.4 - 如何对急切加载关系进行分页【英文标题】:Laravel 5.4 - How to paginate eager loading relationships 【发布时间】:2017-09-19 15:27:41 【问题描述】:

我有以下代码来检索给定部分的线程及其 cmets 及其喜欢。它有效,但我想对结果进行分页。

return $this->threads()->where('state', '=', 'active')->with('comments.likes')->get();

一种方法是这样做,但它不会急切加载,因此会导致大量查询。

return $this->threads()->where('state', '=', active)->paginate(5);

有什么方法可以让我预先加载所有数据并利用 Laravel 的分页魔法?

【问题讨论】:

那么,如果你想加载所有数据然后..,分页有什么用.. @RïshïKêshKümar 当我说所有数据时,我指的是关系数据。 okkk....... 【参考方案1】:

你可以像这样对线程进行分页:

Thread::where('section_id', $sectionId)
      ->where('state', 'active')
      ->with('comments.likes')
      ->paginate(5);

【讨论】:

完美!我还发现它是这样工作的:return $this->threads()->where('state', '=', 'active')->with('comments.likes')->paginate(5);。我之前尝试过,但遇到了错误,所以我一定搞砸了。谢谢。

以上是关于Laravel 5.4 - 如何对急切加载关系进行分页的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 急切加载具有限制和自定义字段的子关系

Laravel 约束急切加载 - 如果关系列应用限制!= 1

Laravel 动态关系 - 在急切加载时访问模型属性

Laravel 急切加载与添加子句的关系?

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

Laravel 自定义数据透视表关系和急切加载?