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

Laravel分页时为何返回不同类型的items数组?

解决Laravel分页返回数组类型不一致问题

问题根源

你当前的写法是先通过get()将所有数据加载到内存集合中,再调用集合的paginate()方法。集合分页与查询构造器分页的内部处理逻辑存在差异,再结合翻译包的字段处理机制,就会导致不同页码的items->items数组类型出现索引数组/关联数组不一致的情况。

修复方案

直接在查询构造器链上调用paginate(),避免先加载全量数据到集合:

return Model::withTranslation()
    ->with(['relation' => function ($relation) {
        $relation->withTranslation();
    }])
    ->paginate(self::PER_PAGE);

这种方式会让Laravel直接在数据库层面执行分页查询,返回的分页结果由框架统一处理,既能保证所有页码的items数组类型一致,也能让翻译包的字段被正确解析。

特殊场景处理(需先操作集合再分页)

如果业务上必须先对全量数据做集合级处理(比如自定义过滤),处理完成后记得用values()方法重置集合索引,确保分页时数组结构统一:

$models = Model::withTranslation()
    ->with(['relation' => function ($relation) {
        $relation->withTranslation();
    }])
    ->get()
    // 此处添加你的集合处理逻辑
    ->values(); // 重置为连续数字索引

return $models->paginate(self::PER_PAGE);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 13:47:03