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

按月份统计数据总量:PostgreSQL查询可行但Laravel实现失败求助

问题解决:Laravel中实现PostgreSQL按月统计数据总量

错误原因

你写的Laravel代码里,groupBy('created_at')和orderBy('created_at')是错误的——原生SQL是按提取出的year和month分组排序,而不是原始的created_at字段。这样会导致分组逻辑完全不符合预期,自然无法得到正确结果。

正确的Laravel实现代码

把分组和排序的字段改成你在DB::raw里定义的别名year和month即可:

return DB::table('project_areas')
    ->select(DB::raw("
        extract(year from created_at) as year,
        TO_CHAR(TO_TIMESTAMP(extract(month from created_at)::text, 'MM'), 'Month') as month,
        COUNT(id) AS count
    "))
    ->groupBy('year', 'month')
    ->orderBy('year', 'month')
    ->get();

补充说明

如果开启了Laravel的严格模式(config/database.php中strict设为true),PostgreSQL可能要求分组字段必须和SELECT中的非聚合字段对应,这里用别名year和month分组是完全符合要求的,不会有问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 23:05:25