在laravel中分页急切加载

时间:2021-07-21 18:32:16

标签: laravel eloquent laravel-8 eager-loading

我正在尝试通过类别获取产品并在类别下显示产品。我还需要为每个类别的产品添加分页。我尝试了以下解决方案,并获得了所有类别,但我只获得了一个类别的产品,而其他类别的产品为空。

    $this->category->with(['products' => function ($query) {
        $query->paginate(3);
    }])->get();

1 个答案:

答案 0 :(得分:0)

我相信您想要的是对类别进行分页,但只是对产品的类别进行分页。阅读whereHas (https://laravel.com/docs/8.x/eloquent-relationships#querying-relationship-existence)。

示例代码:

$this->category->with([
    'products' => function ($query) {
        $query->limit(3);
    }
])
->whereHas('products')
->paginate(10);

如果您不想限制 3 个产品,那么只需从 with 数组中删除闭包即可。 如果您知道您的类别不会太多,则可以完全删除分页(从而检索数据库中的所有类别,但仅检索包含产品的类别)。