我有带有列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
最佳答案
首先在模型关系函数中声明一个关系
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关系