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,
как вариант решения