Eloquent分页结果缺失data、next_page_url等参数求助
Eloquent分页返回结构异常排查建议
可能的原因及解决步骤
检查自定义查询方法的返回值
你的查询中用到了filter()和withUserNames()两个自定义方法,重点排查这两个方法的实现:- 确保
filter()返回的是Eloquent查询构建器实例,而非直接返回集合。如果方法内调用了->get()或->all(),会直接返回集合,后续的paginate()会变成集合的分页(Illuminate\Support\Collection的分页),而非Eloquent原生的LengthAwarePaginator实例——后者才会包含data、next_page_url等标准分页字段。 - 同理检查
withUserNames(),如果方法内做了集合操作而非查询构建器的链式调用,也会破坏原生分页结构。
- 确保
调整方法调用顺序
将paginate()的调用放在最后(仅onEachSide()和withQueryString()可在其后),确保所有查询条件方法都在分页之前执行:Qitem::filter(Request::get("search") ?: "") ->withUserNames() ->withTrashed() ->onEachSide(1) ->withQueryString() ->paginate(10);虽然原顺序理论上可行,但部分自定义方法的内部实现可能对调用顺序敏感,调整后可验证是否解决问题。
检查模型重写方法
查看Qitem模型是否重写了paginate()、newQuery()等核心方法,若重写时未正确返回分页实例,也会导致结构异常。手动构建标准分页响应
若上述排查无果,可手动将分页实例转换为符合要求的结构:$paginator = Qitem::filter(Request::get("search") ?: "") ->withUserNames() ->withTrashed() ->paginate(10) ->onEachSide(1) ->withQueryString(); return response()->json([ 'data' => $paginator->items(), 'current_page' => $paginator->currentPage(), 'next_page_url' => $paginator->nextPageUrl(), 'prev_page_url' => $paginator->previousPageUrl(), 'last_page' => $paginator->lastPage(), 'per_page' => $paginator->perPage(), 'total' => $paginator->total() ]);
内容的提问来源于stack exchange,提问作者Tamás László
相关产品推荐
相关产品推荐

