2012-03-19 96 views
3

我正在使用yii框架。我有一個關係通過關係STAT在yii中訂購

'revCount'=>array(self::STAT, 'Review','rid','condition'=>'status=1')//count review for each restaurant 

現在我想獲取所有的餐廳訂單審查計數。

Restaurant::model()->findAll('with'=>'revCount'); 

我還需要添加什麼才能讓所有按照檢討次數排序的餐館都有所需要?

+0

沒有ü嘗試 餐廳::模型() - >的findAll( '與'=> 'revCount', 'order'=>'revCount'); 它工作嗎? – Arfeen 2012-03-20 12:37:11

+0

沒有。它表示該列'revCount'不存在 – iThink 2012-03-21 13:42:22

回答

1

這是你如何加入其他車型使用單個查詢:

Restaurant::model()->with('revCount')->findAll(); 

但你想要的是不加入模型我在想什麼,只是通過它來進行排序。與此相似:

Restaurant::model()->with(array(
    'reviews'=>array(
     // we don't want to select reviews 
     'select'=>false, 
     // but want to get only reviews with status=1 
     'joinType'=>'INNER JOIN', 
     'condition'=>'reviews.status=1', 
    ), 
))->findAll(); 
1

你應該能夠做到以下幾點..

Restaurant::model()->findAll('with'=>'revCount', 'select' => '(SELECT COUNT(*) FROM review WHERE rid = t.id AND status = 1) AS revCount');