laravel可以轻松实现分页,具体可以参考Laravel 的分页功能,但是有些时候我们除非仔细读一次文档,不能快速查看。
一、如何使用laravel分页
有几种方法可以对项目进行分页。最简单的是在查询语句构造器 或Eloquent查询 中使用paginate方法。
$tests = DB::table('tests')->where('id','>',5)->paginate(5);
你对数据库可以进行任何查询操作,取值的时候你用paginate即可,数字代表的是每页个数。目前,Laravel无法有效执行使用groupBy语句的分页操作。如果你需要在一个分页结果集中使用groupBy,建议你查询数据库并手动创建分页器。
@forelse($tests as $test)
{{ $test->id }}
@empty
没有记录
@endforelse
{{ $tests->links() }}
二、带参数分页(即附加参数到分页链接中)
当我们需要附加参数到分页链接中时,使用方法与普通方法相同,只需要把参数数组append到分页中即可:
public function test(Request $request)
{
$condition=$request->all();
// 根据条件查找数据
$test=DB::table('tests')->where('id',$request->id)->paginate(5);
// 把搜索参数回传
return view('test',['tests'=>$tests,'condition'=>$condition]);
}
接下来添加参数到链接中:
{!! $tests->appends($condition)->render() !!}
三、AJAX分页以及将结果转换为JSON
有时候我们使用AJAX分页以及将结果转换为JSON,我们只需要使用toJson即可:
$tests = DB::table('tests')->where('id','>',5)->paginate(5)->toJson();
四、分页器实例方法
有时候我们会需要获取总数据,上一页和下一页,可以参考:
$tests->count() //当前页显示个数
$tests->currentPage() //当前页数
$tests->hasMorePages() //判断是不是还有更多页,比如最后一页她就不显示,不然就显示1
$tests->lastPage() //最后一页,也是总页数(在 simplePaginate 中无法使用)
$tests->nextPageUrl() //下一页的连接
$tests->perPage() //定义的每页个数
$tests->previousPageUrl() //上一页连接
$tests->total() //总数据量,就是总记录数(在 simplePaginate 中无法使用)
$tests->url($page) //$page是你想跳转到的页数,你也可以同时用获取总页数,然后用url定义到最后一页是吧