按月分组并在 Laravel Eloquent 上对日期进行排序

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 子句中并且包含非聚合列

如何按日期订购?

Dil*_*ara 7

尝试使用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)