Совокупные значения в запросах Doctrine_RawSql

Можно ли использовать агрегированные значения в запросе Doctrine_RawSql? Вот что я пытаюсь сделать:

$q = new Doctrine_RawSql(); $q->select('{q.*}, AVG(a.value) AS avg'); $q->from('-- complex from clause'); $q->addComponent('q', 'Question'); 

Однако SQL, созданный Doctrine, оставляет только столбцы из question таблицы и опускает агрегированное значение avg .

Solutions Collecting From Web of "Совокупные значения в запросах Doctrine_RawSql"

Я никогда раньше не использовал Doctrine_RawSql, но я делал необработанные SQL-запросы через Doctrine, используя любой из этих двух методов:

 Doctrine_Manager::getInstance()->getCurrentConnection()->fetchAssoc("YOUR SQL QUERY HERE"); 

а также

 $doctrine = Doctrine_Manager::getInstance()->getCurrentConnection()->getDbh(); $result = $doctrine->query('YOUR SQL QUERY HERE'); 

Кажется, что эти два метода оставят ваш оригинальный SQL неповрежденным.

Я должен отметить, что я использую Doctrine 1.2 в контексте приложений Symfony 1.4, но AFAIK, это будет работать для вас, независимо от того, какие другие структуры вы можете использовать.

Вы посмотрели раздел кулинарной книги доктрины по агрегатам ? Они используют метод createQuery для диспетчера сущностей, а не RawSql объектов RawSql .

Я не разбираюсь в доктрине, но это может быть хорошим началом!

Попробуйте поместить агрегированное поле в 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'); 

Меня устраивает.