fomvasss
@fomvasss
PHP developer

Как выбрать все месяцы разных годов по одному разу в Laravel?

Для списка архива на блоге нужно выбрать все месяцы по одному разу, в которых есть хотя бы одна запись. Дату в БД храню в поле published_at типа timestamp()
Запрос
Post::select('published_at')->distinct()->get();
извлекает полностью разные даты (дата и время публикации) по одному разу, а мне же нужно разные месяцы.
Думаю что можно увидеть решение задачи в одном запросе... но я как то не могу догадаться. Заранее спс за помощь.
  • Вопрос задан
  • 379 просмотров
Решения вопроса 1
wielski
@wielski
✔ Совет: Вам помогли? Отметьте ответы решением.
Возможно, вам подойдет groupBy?
Post::select(DB::raw("MONTH(published_at) as month, YEAR(published_at) as year"))->groupBy(DB::raw("MONTH(published_at), YEAR(published_at)"))->distinct()->get();
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Wolfnsex
@Wolfnsex
Если не хочешь быть первым - не вставай в очередь!
Для этого, Вам как минимум, нужно будет превратить дату - в месяц...

В SQL это выглядеть будет так:
SELECT DISTINCT MONTH(published_at) FROM table1

Вам осталось только допилить запрос под свои нужны и сконвертировать это в синтаксис Laravel или использовать DB::RAW
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы