5

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

4

3 回答 3

6

在 Yii 关系类型中,我们有 STAT 可以为您执行此操作。在关系()中:

'annunciCount' => array(self::STAT,'Annunci','azienda_id'),

在控制器中:

$model= Model::model()->findAll();
echo 'The Number is: '.$model->annunciCount;
于 2013-11-11T05:06:31.067 回答
0

你试过

getRelated()

来自 Yii api:

返回相关记录。此方法将返回当前记录的相关记录。如果关系是 HAS_ONE 或 BELONGS_TO,它将返回单个对象,如果对象不存在,则返回 null。如果关系是 HAS_MANY 或 MANY_MANY,它将返回对象数组或空数组。

您可以只使用“count($related)”或“sizeOf($related)”来获取计数。

Yii api链接:

http://www.yiiframework.com/doc/api/1.1/CActiveRecord#getRelated-detail

于 2013-09-19T11:19:32.483 回答
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"
于 2013-09-19T11:18:05.520 回答