2012-03-19 63 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');