如何通过一个链接处理多个分页

时间:2018-12-10 23:11:11

标签: php laravel laravel-5 laravel-5.7

在基本分页中,我们获得了一些下一个用于加载更多数据的URL,但是如果这些数据也具有更多的分页数据,那么我该如何自定义并为不同的数据使用不同的参数:

?page=2 to ?posts=2&comments=1

然后将一个用于另一个,另一个用于另一个。

我正在使用具有主要UserResource的api资源,该API资源使用PostsResource返回使用分页的帖子,并返回CommentsResource,同时也使用分页。

1 个答案:

答案 0 :(得分:0)

您可以在分页中更改页面名称。

这是未记录的,但是分页方法如下:

public function paginate($perPage = 15, $columns = ['*'], $pageName = 'page', $page = null) {

因此您可以像这样设置pageName参数:

Post::paginate(15, '[*]', 'posts')
Comment::paginate(15, '[*]', 'comments')

如果您使用的是刀片,它可能看起来像这样:

$posts->appends(array_except(Request::query(), 'posts'))->links();
$comments->appends(array_except(Request::query(), 'comments'))->links();

考虑到您使用的是api,则可以使用meta key访问当前页面。

例如

posts.meta.current_page
comments.meta.current_page

还有一个setPageName method,您可以在其中设置pageName

例如

$posts = Post::paginate(15);
$posts->setPageName('posts');