Yii CDbCriteria计算相关行

时间:2014-10-07 15:11:45

标签: php mysql activerecord yii

我有一个Product(id,name,...)模型和一个OrderItem(id,order_id,product_id)模型,我想通过最畅销的OrderItem模型得到的产品对产品进行排序。

问题是:在yii中,STAT关系是在单独的查询中,所以我无法在CDbCriteria中对其进行排序,如何将此查询放入CDbCriteria?

1 个答案:

答案 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排序选项的排序选项!