Laravel 5.4分页:如何对按ID倒序的Child模型结果实现分页
解决Laravel中Child模型按ID倒序分页的问题
嘿,我来帮你搞定这个分页的问题!你之前的代码里犯了一个小错误:不能先调用get()再用paginate(),因为get()会直接把所有查询结果转换成Collection集合,而paginate()是查询构造器(QueryBuilder)的方法,需要在查询执行前调用才能生成正确的分页SQL。
正确的控制器代码
修改你的index方法,去掉get(),直接把orderBy和paginate链式调用:
public function index() { // 先按id倒序排序,再分页,每页50条 $children = Child::orderBy('id', 'desc')->paginate(50); return view('welcome', compact('children')); }
这样做的好处是,Laravel会自动生成带LIMIT和OFFSET的SQL语句,只查询当前页需要的50条数据,而不是把所有数据都拉到内存里再分页,性能会好很多,尤其是数据量大的时候。
视图中渲染分页链接
在你的视图循环完数据之后,只需要添加一行代码就能渲染分页导航:
@section('content') @foreach($children as $child) <!-- 这里放你渲染单个Child数据的代码,比如: --> <div class="child-item"> ID: {{ $child->id }} | 名称: {{ $child->name }} </div> @endforeach <!-- 渲染分页导航 --> {{ $children->links() }} @endsection
$children->links()会自动生成默认的分页HTML,包含上一页、下一页和页码按钮,Laravel默认支持Bootstrap样式,如果你用的是其他UI框架,也可以自定义分页视图。
另外,分页会自动处理URL中的page参数,用户点击分页按钮时,会自动带上对应的页码,你不需要额外处理路由或请求参数。
内容的提问来源于stack exchange,提问作者Getsuga
相关产品推荐
相关产品推荐

