如何用一个 link 处理多个分页

How to handle multiple paginations with one link

在基本分页中,我们得到一些下一个 url 用于加载更多数据,但是如果这些数据也有更多的分页数据,我如何为不同的数据自定义和使用不同的参数:

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

然后以一为一,以一为二..

我将 api 资源与主 UserResource 一起使用,其中 returns 使用使用分页的 PostsResource 和 returns CommentsResource 也使用分页。

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

这是un-documented,但是分页方法是这样的:

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

所以你可以这样设置pageName参数:

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

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

$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');