[ laravel分页 ] laravel5.*带参数分页,自定义分页,获取总数以及列参数用法详解

Song6259 次浏览0个评论2018年02月26日

laravel可以轻松实现分页,具体可以参考Laravel 的分页功能,但是有些时候我们除非仔细读一次文档,不能快速查看。

一、如何使用laravel分页

有几种方法可以对项目进行分页。最简单的是在查询语句构造器Eloquent查询 中使用paginate方法。

$tests = DB::table('tests')->where('id','>',5)->paginate(5);

你对数据库可以进行任何查询操作,取值的时候你用paginate即可,数字代表的是每页个数。目前,Laravel无法有效执行使用groupBy语句的分页操作。如果你需要在一个分页结果集中使用groupBy,建议你查询数据库并手动创建分页器。

<div class="container">
    @forelse($tests as $test)
        {{ $test->id }}
    @empty
        没有记录
    @endforelse
</div>

{{ $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() !!}

这样我们代参数分页成功,如果想修改样式,可以查看:laravel修改分页样式并且把«和»改成上一页下一页

三、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定义到最后一页是吧

更多相关好文

    当前暂无更多相关好文推荐...