是否可以在 Doctrine_RawSql 查询中使用聚合值?这是我正在尝试做的事情:
$q = new Doctrine_RawSql();
$q->select('{q.*}, AVG(a.value) AS avg');
$q->from('-- complex from clause');
$q->addComponent('q', 'Question');
但是,由 Doctrine 创建的 SQL 仅保留表中的列question
并省略聚合值avg
。
是否可以在 Doctrine_RawSql 查询中使用聚合值?这是我正在尝试做的事情:
$q = new Doctrine_RawSql();
$q->select('{q.*}, AVG(a.value) AS avg');
$q->from('-- complex from clause');
$q->addComponent('q', 'Question');
但是,由 Doctrine 创建的 SQL 仅保留表中的列question
并省略聚合值avg
。
我以前从未使用过 Doctrine_RawSql,但我使用以下两种方法之一通过 Doctrine 完成了原始 SQL 查询:
Doctrine_Manager::getInstance()->getCurrentConnection()->fetchAssoc("YOUR SQL QUERY HERE");
和
$doctrine = Doctrine_Manager::getInstance()->getCurrentConnection()->getDbh();
$result = $doctrine->query('YOUR SQL QUERY HERE');
看起来这两种方法会使您的原始 SQL 保持不变。
我应该注意,我在 Symfony 1.4 应用程序的上下文中使用 Doctrine 1.2,但是 AFAIK,无论您可能使用什么其他框架,这都对您有用。
尝试将聚合字段放入 SQL 中,然后使用大括号获取它。我正在使用 SQL 子查询。
$q = new Doctrine_RawSql();
$q->select('{s.*}, {s.avg} AS avg');
$q->from('(SELECT q.*, AVG(value) AS avg FROM Question AS q) AS s');
$q->addComponent('s', 'Question');
这个对我有用。
你看过关于聚合的教义食谱部分吗?他们createQuery
在实体管理器上使用方法而不是RawSql
对象。
我不是学说专家,但这可能是一个很好的起点!