使用laravel分页时,请在网址中保留过滤器

时间:2016-08-03 10:40:05

标签: php pagination laravel-5.2

我想使用用户指定的过滤器执行查询,然后将结果分页。

在我的控制器中我有:

public function index(Request $a)
{


    $queryJobCards = JobCardHead::query();

    //Add sorting

    $queryJobCards->orderBy('DateReqLatest','desc');

    //Add Conditions

    if($a->has('CusJobNum')) {
        $CusJobNum = $a -> get('CusJobNum');
        $queryJobCards->where('CusJobNum','=',$CusJobNum);
    }

    if($a->has('Status')) {
        $Status = $a->get('Status');
        $queryJobCards->where('Status','=',$Status);
    }

    // get data and Paginate

    $data = $queryJobCards->Paginate(20);

    return view('JobsByDate.JobsByDate', compact('data'));

}

如果我去/ JobsByDate?CusJobNum = 3224然后我得到过滤后的结果但是当我尝试转到下一页时我丢失了过滤器并且网址变为/ JobsByDate?page = 2.

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

插入分页链接时,您需要使用append方法。

{{ $users->appends(['CusJobNum' => 3224])->links() }}

根据您的评论更新:
只要有过滤器,您的['CusJobNum' => 3224 ]门面就会有一个aray Input。在生成链接时,您可以做的是,在您的追加方法的参数中插入Input::get('CusJobNum')。这样,只有在存在过滤器时才会附加它。

{{ $users->appends(Input::get('CusJobNum'))->links() }}

答案 1 :(得分:0)

在过滤器页面中,您可以拥有

{{ $posts->appends(request()->all())->links() }}