【问题标题】:How to write query to count the foreign key in yii using CDbCriteria?如何使用 CDbCriteria 编写查询以计算 yii 中的外键?
【发布时间】:2014-06-13 19:44:20
【问题描述】:

我有表 Ads 与列 AdsId,ClientId 和表 Assigned 。已分配有 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

【问题讨论】:

标签: php mysql activerecord yii


【解决方案1】:

首先在模型关系函数中声明一个关系

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

【讨论】:

  • 非常感谢,今天学到了新东西:)
猜你喜欢
  • 1970-01-01
  • 2013-08-29
  • 1970-01-01
  • 1970-01-01
  • 2012-10-28
  • 1970-01-01
  • 1970-01-01
  • 2014-02-14
  • 1970-01-01
相关资源
最近更新 更多