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

Laravel集合按日期分组后如何调整为指定结构的响应格式

解决方法

你只需要在原有groupBy逻辑后追加集合的map遍历+values重置索引操作即可,完整代码如下:

$formattedData = $this->collection->groupBy(function ($date) {
    return Carbon::parse($date->createdAt)->toDateString();
})
->map(function ($signItems, $dateStr) {
    return [
        'date' => $dateStr,
        'data' => $signItems
    ];
})
->values();

// 接口返回时直接放入data字段即可
return response()->json([
    'data' => $formattedData
]);

逻辑说明

  1. 原有groupBy逻辑保留,还是按日期生成键为日期字符串的关联集合
  2. map方法遍历关联集合,将每组数据重组成包含date和data字段的结构
  3. 最后调用values()方法重置集合的键为连续数字索引,避免转JSON时生成对象结构,最终得到你需要的数组格式。

如果需要按日期倒序排列分组,只需要在groupBy之后追加->sortKeysDesc()即可:

$formattedData = $this->collection->groupBy(function ($date) {
    return Carbon::parse($date->createdAt)->toDateString();
})
->sortKeysDesc() // 按日期倒序排列分组
->map(function ($signItems, $dateStr) {
    return [
        'date' => $dateStr,
        'data' => $signItems
    ];
})
->values();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 20:57:01