我有一个模型Aziende,它与称为Annunci的花药模型有关(1:N),如下所示:
'annunci' => array(self::HAS_MANY,'Annunci','azienda_id'),
我想知道有多少记录确实有这种关系,在mySql中我会这样做:
SELECT count( * )
FROM `aziende` a
JOIN annunci an ON an.azienda_id = a.id
我如何使用Yii AR模型执行此操作?
PS:我试图找出条件查询,但我找不到自己的方式。
答案 0 :(得分:6)
在Yii关系类型中,我们有STAT为您执行此操作。在relations()中:
'annunciCount' => array(self::STAT,'Annunci','azienda_id'),
并在控制器中:
$model= Model::model()->findAll();
echo 'The Number is: '.$model->annunciCount;
答案 1 :(得分:0)
<强>编辑:强>
$criteria = new CDbCriteria();
$criteria->condition = 'annunci.id IS NOT null';
$aziendeList= Aziende::model()->with('annunci')->findAll($criteria);
$count = count($aziendeList); // Count how many "Azienda" have at least one "Annunci"
答案 2 :(得分:0)
你试过
吗?getRelated()
来自Yii api:
返回相关记录。 此方法将返回当前记录的相关记录。 如果关系是HAS_ONE或BELONGS_TO,它将返回单个对象 如果对象不存在,则返回null。如果关系是HAS_MANY或MANY_MANY, 它将返回数组对象或空数组。
你可以使用“count($ related)”或“sizeOf($ related)”来计算。
Yii api link:
http://www.yiiframework.com/doc/api/1.1/CActiveRecord#getRelated-detail