我有一个Product(id,name,...)模型和一个OrderItem(id,order_id,product_id)模型,我想通过最畅销的OrderItem模型得到的产品对产品进行排序。
问题是:在yii中,STAT关系是在单独的查询中,所以我无法在CDbCriteria中对其进行排序,如何将此查询放入CDbCriteria?
答案 0 :(得分:1)
您是否尝试在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排序选项的排序选项!