laravel - 汇总同一日期的总数据并按日期分组
问题描述
我在下面有一个交易表
id | amount | created_at
1 | 300 | 2021-01-01
2 | 400 | 2021-01-01
3 | 150 | 2021-01-02
4 | 600 | 2021-01-03
如何合计同一日期的所有金额并按 created_at 分组显示?
到目前为止我已经尝试过了,但它似乎是错误的
$query->selectRaw('sum(amount) as amount, created_at')
->groupBy('created_at')
->get()
->map(function($item){
return [
'date' => date('d M', strtotime($item->created_at)),
'total' => $item->amount
];
});
解决方案
如果该created_at
字段是日期格式,您的代码将不会出现您在评论中描述的问题(重复结果)。我很确定该列不是真正的日期格式,而是日期时间。
您可以使用DATE(created_at)
实际将其转换为日期格式:
$query->selectRaw('sum(amount) as amount, DATE(created_at) as date')
->groupBy('date')
->get()
->map(function ($item) {
return [
'date' => date('d M', strtotime($item->date)),
'total' => $item->amount,
];
});
推荐阅读
- android - Android 可以接受写入 NFC 标签(模拟空的 NFC 标签)吗?
- image - 用于保存和检索图像的 Flutter 工作流程
- python - Pjsip python脚本因PJ_EINVALIDOP而失败
- python-requests - 如何用python进行非线性拟合
- elasticsearch - 导出 CVS 文件时尝试达到 Kibana Max
- android - Jetpack Security 与两个主密钥的使用
- git - Git 和 Overleaf 之间的同步
- javascript - 如何在ckeditor5中添加文本
- javascript - 不使用 ID 将文本复制到剪贴板
- laravel - 记录工作派遣的来源