Laravel Eloquent分页控制页码与路线

New*_*bie 7 php pagination eloquent laravel-5

Articles::paginate(10) 这段代码将返回前10篇文章,如果我想用路线返回接下来的10篇文章怎么办?例如,url mypage.com/articles/2将从数据库返回第2篇文章.
这是迄今为止我所拥有的:
路线:

Route::get('articles/{page_number}', 'Controller@getArticles')
Run Code Online (Sandbox Code Playgroud)

控制器:

public function getArticles($page_num)
{
    $perPage = 10;
    Articles::getPaginator()->setCurrentPage($page_num);
    $articles = Articles::paginate($perPage);
    return $articles;
}
Run Code Online (Sandbox Code Playgroud)

我可以有类似的东西Articles::pageNumber($page_number)->paginate($perPage);吗?

San*_*esh 14

Laravel paginator会自动检查page查询字符串中的值,并使用它来对结果进行分页.结果还会自动生成下一个和上一个链接,以帮助您直接添加它们.您无需更改任何内容即可使其正常工作.

在您的情况下,您可以$articles->links()在视图中使用生成分页导航按钮.但是如果你想手动设置页面,那么你可以这样做.

$articles = Articles::paginate(5, ['*'], 'page', $pageNumber);
Run Code Online (Sandbox Code Playgroud)

默认的paginate方法采用以下参数.

public function paginate($perPage = null, $columns = ['*'], $pageName = 'page', $page = null);
Run Code Online (Sandbox Code Playgroud)

默认约定是

mypage.com/articles?page=2
mypage.com/articles?page=3
Run Code Online (Sandbox Code Playgroud)

此外,如果您使用$articles->links()生成导航按钮,您还可以自定义CSS.

有关详细信息,请查看https://laravel.com/docs/5.4/pagination