In basic pagination we get some next url for loading more data, but if those data have more data with pagination as well, how can I customize and use different parameters for different data:
?page=2 to ?posts=2&comments=1
And then use one for one, other for other..
I am using api resource with main UserResource which returns posts with PostsResource which uses pagination and returns CommentsResource whicch uses pagination as well.
You can change the page name in the pagination.
This is un-documented, but the paginate method looks like this:
public function paginate($perPage = 15, $columns = ['*'], $pageName = 'page', $page = null) {
So you can set the pageName
parameter like this:
Post::paginate(15, '[*]', 'posts')
Comment::paginate(15, '[*]', 'comments')
If you were using blade, it might look like this:
$posts->appends(array_except(Request::query(), 'posts'))->links();
$comments->appends(array_except(Request::query(), 'comments'))->links();
Considering you are using an api, you could access the current page using the meta key.
eg.
posts.meta.current_page
comments.meta.current_page
There is also a setPageName method where you can set the pageName
eg.
$posts = Post::paginate(15);
$posts->setPageName('posts');