2012-06-29 3 views
0

Можно ли получить данные с подзапросом в dql и поместить результат в атрибут класса, который не является столбцом объекта?symfony2/doctrine2 - dql subselect

hasfreelist - это атрибут класса, но не столбец объектов в mysql.

Это мой DQL:

SELECT e, DATE(e.begin) dbegin, 
(SELECT COUNT(g) FROM AcmeDemoBundle:list g WHERE e.id = g.fkevent) AS e.hasfreelists  
FROM AcmeDemoBundle:event e JOIN e.fklocation l 
WHERE e.enabled=1 e.begin>=:from 
ORDER BY dbegin, e.topevent DESC 

У меня есть следующее сообщение об ошибке:

An exception has been thrown during the rendering of a template 
("[Syntax Error] line 0, col 143: Error: 
Expected Doctrine\ORM\Query\Lexer::T_FROM, got '.'") 

Но это ничего мне не говорит. Благодарим вас за помощь.

ответ

1

Мне кажется, вы можете задать связь между Event и List, а также использовать SIZE function, чтобы добавить свой избранный. Гораздо проще и логично, что путь:

SELECT e, DATE(e.begin) AS dbegin, SIZE(e.lists) AS number_of_lists 
FROM [...] 

Вы все еще можете определить hasFreeList метод на классе объекта, который будет возвращать sizeof($this->lists) > 0.

Но причина, по которой вы получаете эту ошибку, я думаю, заключается в том, что вы определяете свой подзадач как e.hasfreelist. Хотя это свойство вашего класса, это синтаксическая ошибка DQL (должна быть (SELECT x FROM y) AS z). Кроме того, в вашем выборе даты отсутствует оператор AS.