2014-10-07 37 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