COUNT(*) и GROUP BY в Yii

Aug 15, 2012 00:58

Дано таблица A и ActiveRecord-модель Aar. И таблица B (и ActiveRecord-модель Bar). Необходимо получить запрос вида:

SELECT COUNT(*), B.*
FROM A
INNER JOIN B ON A.field_id = B.id
GROUP BY A.field_id

Решение:

$criteria = new CDbCriteria();
$criteria->select = '`t`.*, COUNT(`t`.`field_id`) as Cnt';
$criteria->join = 'INNER JOIN {{B}} ON `t`.`field_id` = {{B}}.id';
$criteria->group = '`t`.`field_id`';

$f = Aar::model()->findAll($criteria);

В коде модели Aar необходимо добавить свойство Cnt:

public Aar extends CActiveRecord {
public $Cnt = 0;
}

В результирующей выборке будет доступно как: $item->Cnt

простое решение, COUNT(*) и GROUP BY, yii, как вариант решения

Previous post Next post
Up