Laravel 4.2分页链接跳转后页面无结果问题求助
解决Laravel 4.2分页后非第一页无结果的问题
嘿,我之前也踩过这个一模一样的坑!问题根源在于分页链接没有携带你的搜索参数——当你点击第二页的链接时,$searchByColumn和$searchKey这两个核心查询条件没有被传递到新请求里,导致后续页面的查询丢失了过滤规则,自然查不到数据啦。下面是具体的解决步骤:
步骤1:在控制器中传递搜索参数到视图
首先要确保搜索用到的列名和关键词能被视图拿到,同时还要保证后续分页请求能正确获取这些参数:
// 从请求中获取搜索参数(不管是第一页还是后续分页页都能拿到) $searchByColumn = Input::get('searchByColumn'); $searchKey = Input::get('searchKey'); // 执行带条件的分页查询 $results = $this->model->where($searchByColumn, '=', $searchKey)->paginate(30); // 把搜索参数和查询结果一起传给视图 return View::make('search-view') ->with('results', $results) ->with('searchByColumn', $searchByColumn) ->with('searchKey', $searchKey);
步骤2:在视图中为分页链接附加搜索参数
Laravel 4.2的links()方法支持通过appends()方法添加额外URL参数,这样分页链接就会带上你的搜索条件了:
@foreach ($results as $result) {{ $result }} <br> @endforeach {{-- 给分页链接附加搜索参数 --}} {{ $results->appends([ 'searchByColumn' => $searchByColumn, 'searchKey' => $searchKey ])->links() }}
更简洁的写法(可选)
如果搜索参数比较多,你可以把它们打包成一个数组传递,代码会更整洁:
控制器代码:
$searchParams = [ 'searchByColumn' => Input::get('searchByColumn'), 'searchKey' => Input::get('searchKey') ]; $results = $this->model->where($searchParams)->paginate(30); return View::make('search-view') ->with('results', $results) ->with('searchParams', $searchParams);
视图代码:
@foreach ($results as $result) {{ $result }} <br> @endforeach {{ $results->appends($searchParams)->links() }}
这样处理之后,你的分页链接就会变成类似search-view?page=2&searchByColumn=xxx&searchKey=xxx的格式,后续页面的查询就能正确带上搜索条件,自然就能显示对应的数据了。
内容的提问来源于stack exchange,提问作者divHelper11
相关产品推荐
相关产品推荐

