You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:11:46