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

如何在Laravel分页结果中追加查询总条数?

解决Laravel分页结果追加总条数的问题

嘿,我来帮你捋清楚这个问题!你想在分页结果里带上查询的总条数,但你用的append()方法其实不是干这个的——它是用来给分页链接追加查询参数的,比如给每页的URL加?filter=active这种,不是用来往返回的数据里加字段的。

其实Laravel的paginate()返回的LengthAwarePaginator对象本身就已经包含总条数了,如果你直接返回这个实例,比如在API接口里返回return $query;,它转成JSON后会自动包含这些字段:

{
  "current_page": 1,
  "data": [...],
  "first_page_url": "http://example.com?page=1",
  "from": 1,
  "last_page": 4,
  "last_page_url": "http://example.com?page=4",
  "links": [...],
  "next_page_url": "http://example.com?page=2",
  "path": "http://example.com",
  "per_page": 5,
  "prev_page_url": null,
  "to": 5,
  "total": 20 // 这就是你要的总条数!
}

如果你想把总条数单独拎出来,或者自定义返回的结构,那可以自己组装响应数组:

// 执行分页查询
$pagination = Model::paginate(5);

// 组装自定义响应
$response = [
    'list' => $pagination->items(), // 当前页的数据列表
    'total' => $pagination->total(), // 整体总条数
    'per_page' => $pagination->perPage(), // 每页条数
    'current_page' => $pagination->currentPage(), // 当前页码
    'last_page' => $pagination->lastPage() // 最后一页页码
];

// 返回JSON响应
return response()->json($response);

要是你非得把总条数直接追加到分页实例的属性里(虽然有点冗余,因为total已经存在了),可以用addAttributes()方法:

$query = Model::paginate(5);
// 给分页实例添加额外属性
$query->addAttributes(['total_count' => $query->total()]);
return $query;

这样返回的JSON里就会多一个total_count字段,和原本的total值一样。

总结一下:Laravel分页本身就自带总条数,如果你需要自定义返回结构,自己组装数组是最灵活的方式~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:26:10