2014-10-07 39 views
-1

我有一个产品(id,name,...)模型,和一个OrderItem(id,order_id,product_id)模型,我想通过最畅销的产品排序我可以从OrderItem模型。Yii CDbCriteria计数相关行

问题是:在yii STAT关系是在一个单独的查询,所以我不能排序它在CDbCriteria,我怎么能把这个查询在CDbCriteria?

回答

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

+0

这个工程,但现在我只得到那些已经订购的产品 – 2014-10-07 18:40:05

+0

尝试左加入! – 2016-09-13 02:23:51