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

Laravel分页问题:Axios请求下点击next_page_url无法获取第二页结果

解决Laravel分页链接丢失查询参数的问题

你遇到的核心问题是分页请求丢失了原有的搜索参数(searchBy和searchValue),导致后端无法匹配查询条件,返回了空的请求参数而非第二页数据。下面是具体的解决方案:

1. 让分页链接携带所有查询参数

Laravel的paginate()方法默认会尝试保留当前请求的查询参数,但有时候需要显式指定要附加的参数。你可以通过appends()方法把当前请求的所有查询参数追加到分页链接中,这样生成的next_page_url就会包含searchBy、searchValue和page参数了:

public function search(Request $request){
    $requestQuery = $request->query(); //获取所有查询参数
    $searchBy = $request->searchBy;
    $searchValue = $request->searchValue;
    
    // 修复条件判断:检查参数是否存在且有效
    if(isset($searchBy) && $searchBy === 'product_id' && !empty($searchValue)) {
        $product = Product::where("product_id", 'like', "%{$searchValue}%")
            ->paginate(5)
            ->appends($requestQuery); // 追加所有查询参数到分页链接
        return response($product);
    } else {
        return $requestQuery;
    }
}

2. 修复条件判断的逻辑漏洞

你原来的条件$searchValue == true存在隐患:当searchValue是非空字符串时,PHP会自动将其转为布尔值true,但如果参数缺失(比如分页请求时),$searchValue会是null,此时条件不成立。改成isset($searchBy) && $searchBy === 'product_id' && !empty($searchValue)可以更严谨地检查参数是否存在且有效,避免因为参数缺失进入else分支。

3. 验证分页链接是否正确

修改后,生成的next_page_url应该变成类似这样的格式:
http://sprint/search?searchBy=product_id&searchValue=sprint-10&page=2
这样点击分页链接时,后端就能获取到完整的搜索参数,正确执行第二页的查询。

补充说明

如果你的前端是通过Axios请求分页链接,确保直接使用后端返回的next_page_url即可,不需要手动拼接参数,这样就能保证请求参数的完整性。

内容的提问来源于stack exchange,提问作者Mohamed Irshath

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 21:17:34