我有带有列AdsAdsId和表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关系

10-06 16:15