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

如何让Laravel分页$couriers->links()保留分页条数设置?

问题

如何让Laravel分页方法$couriers->links()记住分页条数设置?当前切换页码后分页条数总是重置为默认值1,因为$couriers->links()生成的URL仅包含page参数,未携带pagination、sort、order等其他参数。

尝试过使用类内变量,但由于类每次都会重新实例化,变量会重置为初始值。请问是否必须手动编写分页链接?

相关代码

class CourierController extends Controller
{
    
    public function index(Request $request){
        // Get the sort option from the request, default to sorting by 'id'
        $sortField = $request->input('sort', 'id');
        $sortOrder = $request->input('order', 'asc'); // 'asc' or 'desc'
        $pagination = $request->input('pagination', 1);

        // Fetch and sort the couriers
        $couriers = Courier::orderBy($sortField, $sortOrder)->paginate($pagination);
        return view("main", compact("couriers", 'sortField', 'sortOrder', 'pagination'));
    }
    public function sort(Request $request)
    {
        $sortField = $request->input('sort', 'id');
        $sortOrder = $request->input('order', 'asc');
        $pagination = $request->input('pagination', 1);
        $couriers = Courier::orderBy($sortField, $sortOrder)->paginate($pagination);
        return response()->json($couriers);
    }
}

解决方案

不需要手动编写分页链接,Laravel自带的分页实例提供了appends()方法,能轻松携带额外参数,解决参数丢失问题:

方式一:指定需要保留的参数

在控制器中,给分页查询结果追加要保留的参数:

$couriers = Courier::orderBy($sortField, $sortOrder)->paginate($pagination)
    ->appends([
        'sort' => $sortField,
        'order' => $sortOrder,
        'pagination' => $pagination
    ]);

这样$couriers->links()生成的每个分页URL都会自动带上sort、order、pagination参数,切换页码时这些设置就不会丢失。

方式二:自动保留所有请求参数

如果需要保留当前请求中除page外的所有参数(比如后续新增其他筛选条件时),可以直接用request()->except('page')批量追加:

$couriers = Courier::orderBy($sortField, $sortOrder)->paginate($pagination)
    ->appends(request()->except('page'));

这种方式更灵活,不用每次新增参数都修改代码。

前端补充(可选)

如果分页条数是通过前端下拉框或表单切换的,记得在表单里带上当前的sort和order参数,比如添加隐藏输入框:

<input type="hidden" name="sort" value="{{ $sortField }}">
<input type="hidden" name="order" value="{{ $sortOrder }}">

这样切换分页条数时,排序设置也能一起提交,不会被重置。

内容的提问来源于stack exchange,提问作者Азимия

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 22:09:57