Как преобразовать оператор SELECT в Eloquent? - PullRequest
0 голосов
/ 01 июня 2019

Это работает на существующем веб-сайте, пытаясь преобразовать в Laravel 5.8 код:

SELECT
  DATE_FORMAT(created_at, '%M %Y') AS 'article',
  DATE_FORMAT(created_at, '%m')AS 'm',
  DATE_FORMAT(created_at,'%Y') AS 'y',
  COUNT(id) AS 'total'
FROM posts
GROUP BY DATE_FORMAT(created_at, '%Y%M')
ORDER BY m DESC

Я пытался:

$archives = DB::select("SELECT DATE_FORMAT(created_at, '%M %Y') AS 'article',DATE_FORMAT(created_at, '%m')AS 'm', DATE_FORMAT(created_at,'%Y') AS 'y', COUNT(id) AS 'total' FROM posts GROUP BY DATE_FORMAT(created_at, '%Y%M') ORDER BY m DESC");`

Я получил:

Ошибка: SQLSTATE [42000]: синтаксическая ошибка или нарушение прав доступа: 1055 «amohdb.posts.created_at» отсутствует в GROUP BY (SQL: SELECT DATE_FORMAT (созданный_кат, «% M% Y») AS »статья», DATE_FORMAT (созданный_кат), '% m') AS 'm', DATE_FORMAT (creat_at, '% Y') AS 'y', COUNT (id) AS 'всего' ОТ сообщений GROUP BY DATE_FORMAT (creation_at, '% Y% M') ORDER BYм DESC)

1 Ответ

0 голосов
/ 02 июня 2019

Ответ оказался намного проще, чем я думал

$archives =  Post::select(DB::raw("DATE_FORMAT(created_at, '%M %Y') as article"),
DB::raw("COUNT(id) as total"))
->groupBy('article')
->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...