在laravel api中对关系资源进行分页

Posted

技术标签:

【中文标题】在laravel api中对关系资源进行分页【英文标题】:paginate relational resource in laravel api 【发布时间】:2021-11-18 21:04:20 【问题描述】:

我有两个模型,UserComment,每个 User 可以有多个 Comment,我可以在 User 上调用 paginate(3) 并在每页输出中获得 3 个 User,但我需要对于 UserCollection 中的 cmets,与 User 相同。 是否可以通过分页来限制 UserCollection 提供的 cmets?

【问题讨论】:

【参考方案1】:

是的,您只需将 pageName 的第三个参数添加到 paginate 方法中即可区分它们。

类似:

$users->paginate($perPage, ['*'], 'users')
$comments->paginate($perPage, ['*'], 'comments_'. $user_id)

https://laravel.com/api/8.x/Illuminate/Database/Eloquent/Builder.html#method_paginate

注意:虽然您可以这样做,但我个人只会获取前 3/5 cmets,然后有一个显示 click to load more 的按钮,然后有一个单独的路由,您可以通过 AJAX 请求调用以获取它们。

【讨论】:

你能说哪种方法更好用吗?哪个是标准的?使用 ajax 还是使用分页? 在这种情况下,我会使用 AJAX 请求来获取任何额外的 cmets,因为它更容易 10 倍,并且它会有更多的可读性和可扩展性代码

以上是关于在laravel api中对关系资源进行分页的主要内容,如果未能解决你的问题,请参考以下文章

在 Laravel 中对分页变量进行排序

如何在laravel中对相关模型进行分页

如何在 Laravel 5 中对合并的集合进行分页?

如何在 laravel&Vue 中对数据进行分页?

在 laravel 中对数据数组进行分页并在 vuejs 中使用无限滚动的最佳方法

如何获得关系的平均值,然后在 Laravel 7.x 中对其进行排序?