我的表Ads
包含列AdsId
,ClientId
和表Assigned
。已分配有AdsId
作为外键。我想计算给定AdsId
的已分配ClientId
的数量。我有以下查询,但我不确定它是否是最佳方式。如何在yii中运行相同的查询?希望我明白我的问题。
SELECT A. * , (
SELECT COUNT( B.AdsId )
FROM Assigned AS B
WHERE B.AdsId = A.AdsId
AND A.ClientId =1
)
FROM Ads AS A
WHERE A.ClientId =1
LIMIT 0 , 30
答案 0 :(得分:0)
首先在模型关系函数中声明一个关系
public function relations(){
return array(
...
'AdsIdCount'=> array(self::STAT,'Ads','AdsId'),
//'VarName'=>array('RelationType', 'ClassName', 'ForeignKey', ...additional options)
);
}
然后在您返回的activeRecord结果中,您可以像这样调用此计数
$result = Assigned::model()->find($criteria);
$result->adsIdCount ; // do logic here
或
$results = Assigned::model()->findAll($criteria);
foreach ($results as $result){
$result->adsIdCount ; // do logic here
}
请参阅STAT关系,了解有关其工作原理http://www.yiiframework.com/doc/guide/1.1/en/database.arr#statistical-query
的详细信息