Спасибо за подсказку.
В функции CDbCommandBuilder::createCountCommand есть такой кусок:
Код: Выделить всё
if(!empty($this->group) || !empty($this->having))
{
$select=is_array($criteria->select) ? implode(', ',$criteria->select) : $criteria->select;
if($criteria->alias!='')
$alias=$criteria->alias;
$sql=($criteria->distinct ? 'SELECT DISTINCT':'SELECT')." {$select} FROM {$table->rawName} $alias";
$sql=$this->applyJoin($sql,$criteria->join);
$sql=$this->applyCondition($sql,$criteria->condition);
$sql=$this->applyGroup($sql,$criteria->group);
$sql=$this->applyHaving($sql,$criteria->having);
$sql="SELECT COUNT(*) FROM ($sql) sq";
}
else
{
По смыслу должно быть не $this->group а $criteria->group и, соответственно, не $this->having, а $criteria->having
Свойств 'group' и 'having' нет в классе CDbCommandBuilder, зато они есть в классе CDbCriteria.