Laravel Eloquent 分页控制页码与路由
Posted
技术标签:
【中文标题】Laravel Eloquent 分页控制页码与路由【英文标题】:Laravel Eloquent pagination control page number with route 【发布时间】:2017-10-20 00:29:02 【问题描述】:Articles::paginate(10)
此代码将返回第 10 篇文章,如果我想返回带有路由的下 10 篇文章怎么办?例如 url mypage.com/articles/2
将返回数据库中的第 2 10 篇文章。
到目前为止,这是我所拥有的:路线:
Route::get('articles/page_number', 'Controller@getArticles')
控制器:
public function getArticles($page_num)
$perPage = 10;
Articles::getPaginator()->setCurrentPage($page_num);
$articles = Articles::paginate($perPage);
return $articles;
我可以有类似Articles::pageNumber($page_number)->paginate($perPage);
的东西吗?
【问题讨论】:
【参考方案1】:Laravel 分页器自动检查查询字符串中page
的值,并使用它对结果进行分页。结果还会自动生成下一个和上一个链接,以帮助您直接添加它们。您无需进行任何更改即可使其正常工作。
在您的情况下,您可以在视图中使用$articles->links()
来生成分页导航按钮。但是如果你想手动设置页面那么你可以这样做。
$articles = Articles::paginate(5, ['*'], 'page', $pageNumber);
默认的分页方法采用以下参数。
public function paginate($perPage = null, $columns = ['*'], $pageName = 'page', $page = null);
默认约定是
mypage.com/articles?page=2
mypage.com/articles?page=3
另外如果你使用$articles->links()
生成导航按钮,还可以自定义css。
查看https://laravel.com/docs/5.4/pagination了解更多信息
【讨论】:
我收到错误Method setCurrentPage does not exist.
@Newbie 我的错,我已经很久没有使用分页了。我已经更新了我的答案并测试了代码以确保。【参考方案2】:
$results= DB::table('subscribers')->select('id', 'name', 'email')->paginate(20);
$results->count();
$results->currentPage();
$results->firstItem();
$results->hasMorePages();
$results->lastItem();
$results->lastPage(); (使用 simplePaginate 时不可用)
$results->nextPageUrl();
$results->perPage();
$results->previousPageUrl();
$results->total(); (使用 simplePaginate 时不可用)
$results->url($page);
【讨论】:
正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。以上是关于Laravel Eloquent 分页控制页码与路由的主要内容,如果未能解决你的问题,请参考以下文章
Laravel Eloquent - hasrsine 公式和分页
Laravel Eloquent 按孩子的长度排序,然后分页
如何通过分页获取 Laravel Eloquent 中的特定列?