Php 如何使用CDbCriteria编写查询以计算yii中的外键?

Php 如何使用CDbCriteria编写查询以计算yii中的外键?,php,mysql,activerecord,yii,Php,Mysql,Activerecord,Yii,我有表Ads,其中列AdsId,ClientId和表已分配。已分配的AdsId为外键。我想计算为给定的ClientId分配的AdsId的数量。我有下面的问题,但我不确定这是否是最好的方法。如何在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.Clien

我有表
Ads
,其中列
AdsId
ClientId
和表
已分配
。已分配的
AdsId
为外键。我想计算为给定的
ClientId
分配的
AdsId
的数量。我有下面的问题,但我不确定这是否是最好的方法。如何在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
}