Php 按月分组,并在Laravel Elount上排序日期
我有以下疑问Php 按月分组,并在Laravel Elount上排序日期,php,mysql,laravel,eloquent,Php,Mysql,Laravel,Eloquent,我有以下疑问 $months=\App\DATA::select( DB::raw('sum(order_value)作为'sums'), DB::raw(“日期格式(创建于,'%M%Y')作为月份”) ) ->其中(“创建于”、“>”、\Carbon\Carbon::now()->子月(6)) ->groupBy(“月”) ->get(); 这就是过去6个月每个月的数据总和。问题是它是按字母顺序输出日期的 August 2019 July 2019 June 2019 May 2019 No
$months=\App\DATA::select(
DB::raw('sum(order_value)作为'sums'),
DB::raw(“日期格式(创建于,'%M%Y')作为月份”)
)
->其中(“创建于”、“>”、\Carbon\Carbon::now()->子月(6))
->groupBy(“月”)
->get();
这就是过去6个月每个月的数据总和。问题是它是按字母顺序输出日期的
August 2019
July 2019
June 2019
May 2019
November 2019
October 2019
September 2019
我不能用订购者订购它:
->orderBy('created_at')
由于以下问题
SQLSTATE[42000]:语法错误或访问冲突:ORDER BY子句的1055表达式#1不在GROUP BY子句中,并且包含未聚合的列
如何按日期排序?只需按
创建的排序数据即可:
$months=\App\DATA::select(
DB::raw('ANY_VALUE(created_at)作为created_at')
DB::raw('sum(order_value)作为'sums'),
DB::raw(“日期格式(创建于,'%M%Y')作为月份”)
)
->其中(“创建于”、“>”、\Carbon\Carbon::now()->子月(6))
->orderBy('created_at')
->groupBy(“月”)
->get();
尝试使用max
函数和->orderBy('createdAt','desc')
如果正在对其进行分组,则不能以这种方式对其进行排序SQLSTATE[42000]:语法错误或访问冲突:ORDER BY子句的1055表达式#1不在GROUP BY子句中,并且包含未聚合列
请尝试在select中添加在
处创建的
。我已经编辑了我的回答这里潜在的报告问题是您正在选择OP初始查询没有的新列。谢谢!只有当orderBy
更改为createdAt
而不是created\u时,这才有效。
$months = \App\DATA::select(
DB::raw('sum(order_value) as `sums`'),
DB::raw("DATE_FORMAT(created_at,'%M %Y') as months"),
DB::raw('max(created_at) as createdAt')
)
->where("created_at", ">", \Carbon\Carbon::now()->subMonths(6))
->orderBy('createdAt', 'desc')
->groupBy('months')
->get();