当前位置 > it书童 > laravel > 正文

laravel 限制条数后再分页

laravel it书童 2019-11-11 16:48:06 0赞 0踩 160阅读 0评论

laravel 自带开箱即用的分页,使用起来如丝般顺滑。默认情况下是对所有记录进行分页,现在我们有这样的需求:限制用户只能看到前 30 页。第一想法就是用 limit 限制条数后再调用分页,如:

$per_page = 15; // 每页条数
$limit_page = 30; // 限制总页数
$data = Article::orderBy('id', 'desc')->limit($per_page * $limit_page)->paginate($per_page);

此种写法并不能生效,因为 paginate 方法中内置的 limit 会替换掉我们的 limit

虽然我们可以根据文档,手动调用分页的相关方法,自己撸一个分页。但这种实现方式太繁琐,相当于造轮子。我们可以切换一下思维来解决:

  • 取出要展示的条数的最小 id

  • 在总记录中设置 id 大于上一条件得到的最小 id

即,用 where 替换 limit 限制总条数

$last_id = Article::orderBy('id', 'desc')
    ->limit($per_page * $limit_page)
    ->pluck('id')
    ->sort()
    ->first();
$data = Article::orderBy('id', 'desc')
    ->where('id', '>', $last_id)
    ->paginate($per_page);
转载须注明出处:https://www.itshutong.com/articles/354/page-after-laravel-limits-the-number-of-entries
关于我
一个文科出身的程序员,追求做个有趣的人,传播有价值的知识,微信公众号主要分享读书思考心得,不会有代码类文章,非程序员的同学请放心订阅
发表评论
我有句话,不知当讲不当讲?
要讲之前请先 登录