slo*_*ace 3 php mysql laravel eloquent
我有以下查询
$months = \App\DATA::select(
DB::raw('sum(order_value) as `sums`'),
DB::raw("DATE_FORMAT(created_at,'%M %Y') as months")
)
->where("created_at", ">", \Carbon\Carbon::now()->subMonths(6))
->groupBy('months')
->get();
Run Code Online (Sandbox Code Playgroud)
对过去 6 个月中每个月的数据进行汇总。问题是它按字母顺序输出日期。
August 2019
July 2019
June 2019
May 2019
November 2019
October 2019
September 2019
Run Code Online (Sandbox Code Playgroud)
我不能订购它orderBy:
->orderBy('created_at')
Run Code Online (Sandbox Code Playgroud)
由于以下问题
SQLSTATE[42000]:语法错误或访问冲突:1055 ORDER BY 子句的表达式 #1 不在 GROUP BY 子句中并且包含非聚合列
如何按日期订购?
尝试使用max函数和 ->orderBy('createdAt', 'desc')。
$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();
Run Code Online (Sandbox Code Playgroud)