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

Laravel分页下一页按钮异常:显示重复内容,页码始终为1

解决Laravel分页下一页内容重复、参数异常的问题

嘿,我之前也踩过类似的分页坑,咱们一步步来搞定它:

先拆解问题根源

你提到的next_page_url=null、current_page始终为1,核心问题大概率是分页的默认页码参数page没有被后台正确接收,导致分页组件一直停在第1页;而total=1要么是符合条件的数据库记录确实只有1条,要么是查询逻辑存在疏漏。

具体排查&解决步骤

1. 先确认数据库实际数据量

先暂时去掉分页逻辑,查一下符合条件的记录总数,排除数据本身的问题:

public function getInboxEmails(Request $request){ 
    $to_user_id = Auth::user()->id; 
    // 先打印总数,验证实际数据量
    $total = DB::table('inboxes')
        ->where('to_user_id',$to_user_id)
        ->where('deletedTo',0)
        ->count();
    dd($total); // 如果输出确实是1,那分页没有下一页是正常情况
    
    // 原分页代码
    $Inbox = DB::table('inboxes')->where('to_user_id',$to_user_id)->where('deletedTo',0)->paginate(5); 
    return view('mail',['Inbox'=>$Inbox]); 
}

如果总数大于5,那继续往下排查。

2. 检查page参数是否正确传递

  • 前端层面:右键点击下一页按钮,查看链接地址,正常应该带有?page=2这样的参数。如果没有,说明分页组件渲染有问题,检查前端是否正确使用了{{ $Inbox->links() }}生成分页链接。
  • 后台层面:在方法里打印page参数,确认是否成功接收:
public function getInboxEmails(Request $request){ 
    dd($request->get('page')); // 点击下一页时,正常应该输出2、3...如果是null,说明参数没传过来
    // 原代码...
}

3. 强制指定分页参数(兜底方案)

如果确认page参数能传到后台,但分页仍不生效,可以手动指定分页的参数名和页码:

public function getInboxEmails(Request $request){ 
    $to_user_id = Auth::user()->id; 
    // 手动获取page参数,默认值设为1
    $currentPage = $request->input('page', 1);
    // 第四个参数指定页码参数名,确保分页组件识别正确
    $Inbox = DB::table('inboxes')
        ->where('to_user_id',$to_user_id)
        ->where('deletedTo',0)
        ->paginate(5, ['*'], 'page', $currentPage); 
    return view('mail',['Inbox'=>$Inbox]); 
}

4. 排查路由/中间件是否拦截参数

检查你的路由定义,有没有在路由里使用了和page同名的参数?或者有没有自定义中间件过滤掉了page请求参数?比如有些中间件可能会清理请求参数,导致page被意外丢弃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:30:25