Laravel: заказ по месяцам и годам - PullRequest
0 голосов
/ 01 марта 2020

Здравствуйте. Пожалуйста, как сделать заказ по году и месяцу, используя поле artibute. Мой код:

\App\User::select(DB::raw('SUM(Comptabilise)* -1 as `data`'), DB::raw("DATE_FORMAT(date, '%m-%Y') new_date"),  DB::raw('MONTHNAME(date) month'))
        ->groupby('month')
        ->orderBy('YEAR(new_date)', 'ASC')
        ->orderBy('MONTH(new_date)', 'ASC')
        ->get();

Я хочу заказать по new_date с минимальной даты до максимальной, например с 05-2018 по 10- 2019 Пожалуйста, не могли бы вы помочь мне сделать это и спасибо?

Ответы [ 2 ]

1 голос
/ 01 марта 2020

Обратите внимание, что предложение group by не выглядит правильным.

Вы группируете по названию месяца. Таким образом, если ваши данные распространяются более чем на 12 месяцев, у вас все равно останется 12 записей только с набором результатов, с записями, имеющими один и тот же месяц, но разные годы, сгруппированные вместе.

Вы должны добавить год в группу по Предложение, например, так:

\App\User::select(DB::raw('SUM(Comptabilise)* -1 as `data`'), DB::raw("YEAR(date) year"),DB::raw('MONTH(date) months'),  DB::raw('MONTHNAME(date) month'))
        ->groupBy('year')
        ->groupBy('months')
        ->orderBy('year', 'ASC')
        ->orderBy('months', 'ASC')
        ->get();

Примечание: MySQL имеет функцию YEAR(), я использовал ее в запросе, потому что она более соответствует MONTH(), чем при использовании метода преобразования строк, например DATE_FORMAT().

1 голос
/ 01 марта 2020

Я исправляю по этому коду и спасибо за ваше время!

\App\User::select(DB::raw('SUM(Comptabilise)* -1 as `data`'), DB::raw("DATE_FORMAT(date, '%Y') year"),DB::raw('MONTH(date) months'),  DB::raw('MONTHNAME(date) month'))
        ->groupby('month')
        ->orderBy('year', 'ASC')
        ->orderBy('months', 'ASC')
        ->get();
...