繁体   English   中英

如何使用 laravel 获取当前年份的数据库表字段中的总金额

[英]How to get the total amount in a database table field month wise of the current year using laravel

所以我有一个带有数量和 created_at 字段的数据库,我想要当年和/或每年每月的总金额。

$sql = 'SELECT SUM(amount) as "Amount",MONTHNAME(created_at) as "Month"
FROM transactions WHERE YEAR(created_at) = YEAR(CURDATE())
GROUP BY YEAR(created_at),MONTH(created_at)';
DB::statement($sql);

实际表

ID    amount     created_at
1      1000      2019-10-24    
2      234       2019-11-11
3      122       2019-09-04
4      5200      2019-09-14

预期结果

ID    Amount     Month
1      6322      September    
2      234       November

语法错误或访问冲突:1055 db.table.created_at 不在 Group by(SQL: SELECT SUM(amount) as "Total Amount", MONTHNAME(created_at) as "Month

请问它在说什么。 但是,如果在 phpmyadmin 上运行此查询,它工作得很好

首先在app\config\database -> mysql中设置strict => false

之后运行php artisan optimize

然后

 $sql = DB::table('transactions')
        ->select(DB::raw('SUM(amount) as Amount,MONTHNAME(created_at) as Month Name'))
        ->where(DB::raw('YEAR(created_at) = YEAR(CURDATE())'))
        ->groupBy('created_at')
        ->get();

您正在对created_at的部分进行分组,然后在您SELECT时引用created_at本身。 问题是,当您在查询中对结果进行分组时,只能使用聚合函数和分组的事物。 如果您在 select 中使用MONTH(created_at)而不是MONTHNAME应该没问题(或者您可以group by YEAR, MONTHNAME并继续在投影中使用MONTHNAME

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM