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
}