У меня есть модель Product (id, name, …) и модель OrderItem (id, order_id, product_id), и я хочу отсортировать товары по количеству продаваемых товаров, которые я могу получить из модели OrderItem.
Проблема в том, что в yii отношение STAT находится в отдельном запросе, поэтому я не могу отсортировать его в CDbCriteria. Как я могу поместить этот запрос в CDbCriteria?
Вы пытались сделать соединение по cdbcriteria, а затем упорядочить по?
Нечто подобное может сработать:
<?php
$criteria->mergeWith([
'join' => ' INNER JOIN (SELECT COUNT(*) as qty, product_id FROM OrderItem oi GROUP BY product_id) oiInner ON oiInner.product_id=t.product_id',
'order' => ' oiInner.qty DESC'
]);
Как-то так должно работать!
Не забудьте добавить это как опцию сортировки в опциях сортировки DataProvider!
Других решений пока нет …