一、前言
这个问题也是老生常谈了。顶部搜索好做,分页也好做,但是带着条件分页就不太好做。也是博主自己看文档不仔细。后面仔细看文档,发现了laravel 5.5 本身就提供了这样一个方法。
文档位置:Laravel 的分页功能
二、条件分页的实现
博主本来是用post的方式传递条件查询的。但是在laravel自带的分页中,点击分页执行的是get请求,会把分页的页码page直接显示在地址栏。所以用post传递查询条件不太好,因此改为get表单提交顶部条件。
1、获取条件
$test= $request->input('test','');
$test1= $request->input('test1','-1');
这里大家平时接收参数,大多数只是单纯的接收参数。我们这里由于是带的顶部搜索,所以在获取不到搜索值的情况下,应该给一个默认的参数。通过判断来确定到底是简单的展示页面还是带有查询条件的展示页面。
2、拼接sql
$sql = DB::table('test');
if($test){
$sql = $sql->where('test', '=', $test);
}
if($test1>-1){
$sql = $sql->where('test1', '=', $test1);
}
$arr = $sql->orderBy('created_at', 'desc')->paginate(10);
这部分就是判断获取的参数,在没有搜索条件的时候是不会影响正常查询的。
3、附加参数到分页链接中(视图传参)
//你可以使用 appends 方法将查询参数附加到分页链接中。
//例如,要将 sort=votes 附加到每个分页链接,可以这样调用 appends 方法:
{{ $users->appends(['sort' => 'votes'])->links() }}
这部分是laravel官方给出的方法,我们可以在展示的时候,把参数传递进去。
4、附加参数到分页链接中(控制器传参)
//这部分是在控制器中,把参数添加进去。添加完成之后就可以了
$arr->appends($request->input());
这里的$request->inpuit()
就是我们获取到的所有参数的合集。通过控制器传递参数,视图页只需要正常显示分页即可。{!! $arr->render()!!}
以上就是laravel5.5中带有条件的顶部搜索。文档是个好东西。
end