我想用用户指定的过滤器来形成一个查询,然后对结果进行分页。
在我的控制器中,我有:
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然后我得到了过滤后的结果,但当我试图转到下一页时,我失去了过滤器,url变成了/JobsByDate?page=2.
我该怎么解决这个问题?
插入分页链接时需要使用append
方法。
{{ $users->appends(['CusJobNum' => 3224])->links() }}
根据您的评论更新:
无论何时过滤器出现,您的Input
外观中都会有一个aray ['CusJobNum' => 3224 ]
。生成链接时,可以在append方法的参数中插入Input::get('CusJobNum')
。通过这种方式,只有在过滤器存在的情况下才会附加它。
{{ $users->appends(Input::get('CusJobNum'))->links() }}
在过滤器页面中,您可以使用
{{ $posts->appends(request()->all())->links() }}