Yii计数模型与关系

时间:2013-09-19 11:05:02

标签: php mysql yii count relation

我有一个模型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:我试图找出条件查询,但我找不到自己的方式。

3 个答案:

答案 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