Как правильно оформить запрос Active Record?

пишу такой запрос

$years=Serial::find()->from(['new_table'=>Serial::find()->orderBy(['year'=>SORT_DESC])])->select('year')->groupBy('year')->orderBy(['year'=>SORT_DESC])->all();


получаю

SELECT `year`
 FROM (
SELECT * 
FROM `fl_serial` 
ORDER BY `year` DESC) `new_table` 
GROUP BY `year`


а хотелось бы вот такой

SELECT `year`
FROM (
SELECT *
FROM `fl_serial`
) `new_table`
GROUP BY `year`
ORDER BY `year` DESC


как правильно его оформить
  • Вопрос задан
  • 68 просмотров
Пригласить эксперта
Ответы на вопрос 1
qonand
@qonand
Software Engineer
Вам нужно получить уникальный список годов? если да - тогда изначальный запрос у Вас сформирован не верно, для этих целей не стоит использовать группировку и вложенный подзапрос, гораздо проще использовать DISTINCT, например так:
SELECT DISTINCT(year) FROM fl_serial ORDER BY `year` DESC

соответственно запрос для AR будет следующим
Serial::find()->select('year')->orderBy(['year'=>SORT_DESC])->distinct();
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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