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

Laravel按月份分组用户并输出月份名称的实现方法

解决Laravel查询结果中月份键名替换为英文名称的问题

要实现把统计结果中的month键替换为对应月份的英文名称,核心在于SQL无法返回动态变化的列名,所以我们需要在查询完成后,通过Laravel的集合(Collection)来处理结果。下面提供两种实用的实现方式:

方法一:手动维护月份映射数组

这种方式适合需要自定义月份名称(比如缩写或特定拼写)的场景:

步骤1:调整原查询,保留月份数字

首先修改查询语句,明确获取月份数字和统计数量,方便后续映射:

$devlist = DB::table("users")
    ->select(
        DB::raw("MIN(id) as id"), // 按需求取分组内的id,这里用MIN确保取最小id
        DB::raw("COUNT(*) as total"),
        DB::raw("MONTH(created_at) as month_num")
    )
    ->orderBy('created_at')
    ->groupBy(DB::raw("MONTH(created_at)"))
    ->get();

步骤2:定义月份映射并处理结果

创建月份数字到英文名称的映射数组,然后用map方法遍历集合替换键名:

// 月份数字转小写英文名称的映射
$monthMap = [
    1 => 'january',
    2 => 'february',
    3 => 'march',
    4 => 'april',
    5 => 'may',
    6 => 'june',
    7 => 'july',
    8 => 'august',
    9 => 'september',
    10 => 'october',
    11 => 'november',
    12 => 'december',
];

$formattedResult = $devlist->map(function ($item) use ($monthMap) {
    // 获取对应月份名,默认值处理异常情况
    $monthName = $monthMap[$item->month_num] ?? 'unknown_month';
    // 构造新的结果数组
    return [
        'id' => $item->id,
        $monthName => $item->total,
    ];
});

方法二:利用Carbon自动生成月份名称

如果不需要自定义月份名,推荐用Laravel内置的Carbon库来自动生成标准英文月份名称,更简洁:

步骤1:确保Carbon可用

Laravel默认已经集成Carbon,直接引入即可:

use Carbon\Carbon;

步骤2:查询并处理结果

同样先调整查询保留月份数字,然后用Carbon转换月份名:

$devlist = DB::table("users")
    ->select(
        DB::raw("MIN(id) as id"),
        DB::raw("COUNT(*) as total"),
        DB::raw("MONTH(created_at) as month_num")
    )
    ->orderBy('created_at')
    ->groupBy(DB::raw("MONTH(created_at)"))
    ->get();

$formattedResult = $devlist->map(function ($item) {
    // Carbon的format('F')返回英文全称,转小写后作为键名
    $monthName = Carbon::create()->month($item->month_num)->format('F')->toLowerCase();
    return [
        'id' => $item->id,
        $monthName => $item->total,
    ];
});

最终效果

经过处理后,结果会变成你预期的格式(注:你示例中的月份数字和名称对应有误,3对应March、4对应April,代码会生成正确的映射关系):

[{"id":1,"march":3},{"id":4,"april":4}]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:25:56