如何用一个 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');
在基本分页中,我们得到一些下一个 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');