在YII上使用CDbWriter时,如何从查询中排除主键选择


How to exclude primary key selection from the query when using CDbCriteria on YII

当使用与另一个表连接的CDbWriter时,我遇到了主键的默认选择问题
我有两张桌子:

Content (
  id int2 pk,
  title varchar,
  content varchar,
  categoryid int2 fk
)
Category (
  id int2 pk,
  name varchar,
  ...
)

我想在类别中选择namecount(id)没有其他),并按名称将它们分组以获得类别的数量。但当我尝试以下操作时,由于选择了主键,我出现了错误。

$criteria=new CDbCriteria();
$criteria->with=array('category' => array('alias' => 'c', 'select' => 'c.name, COUNT(c.id) AS quantity'));
$criteria->select=array();
$criteria->group='c.name';
$result=Content::model()->findAll($criteria);

它给了我以下错误:
[Err] ERROR: column "t.id" must appear in the GROUP BY clause or be used in an aggregate function
我现在想的问题的解决方案是从标准中获取生成的SQL,并将其替换为空字符串(我还找不到获取SQL的方法)或更改框架代码(这似乎要复杂得多)
我的数据库管理员是PostgreSQL
附言:在分组中添加id并不能帮助所有地方的数量变为1。
感谢您的帮助

我认为小组必须在这个:

$criteria->with=array('category' => array('alias' => 'c', 'select' => 'c.name, COUNT(c.id) AS quantity', 'group' => 'c.name'));