Агрегированные значения в запросах Doctrine_RawSql - PullRequest
4 голосов
/ 18 февраля 2010

Можно ли использовать статистические значения в запросе 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.

Ответы [ 3 ]

6 голосов
/ 02 декабря 2010

Я никогда раньше не использовал 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, это будет работать для вас независимо от того, какие другие фреймворки вы используете.

0 голосов
/ 24 мая 2012

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

Это работает для меня.

0 голосов
/ 29 ноября 2010

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

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

...