Коллеги, требуются ваши мозги )
Допустим, есть сложный запрос (с подзапросами, группировками и агрегатными функциями).
Хочется результат выполнения этого запроса выводить штатными средствами (с пагинацией, лимитом, ООП и прочими прелестями жизни.
Соответственно, возникает вопрос, как этого можно достичь.
Например, один из вариантов: создать DB-вьюху и на нее нацепить модель.
Работает отлично, пока не требуются дополнительные параметры фильтрации по содержимому группируемых полей.
(т.е. SELECT * from MyView WHERE myAggregateField IN (…) не сработает, поскольку группировка уже произошла)
Что посоветуете?
spk
(Sitepodkluch)
January 26, 2010, 1:39pm
2
Не пойму а чем CDbCriteria не подходит ?
Возможно подходит, а я просто туплю.
Можно пример кода, создающего запрос а потом выгребающего оттуда данные, с возможностью применения стандартной сортировки?
creocoder
(Creocoder)
February 2, 2010, 10:45pm
4
Да запросто:
$criteria=new CDbCriteria(array(
'with'=>array(
'category',
'content.author',
),
'condition'=>'content.isPublished',
'order'=>'t.title',
));
$organizations=Organization::model()->findAll($criteria);
Пример без агрегатных функций, но добавить оные в параметры CDbCriteria не проблема. Вы бы более подробно задачу описали, можно даже с запросом на SQL, вам помогут это грамотно перевести на AR. А он в Yii очень мощный и решает 90% задач любой сложности.