Фреймворк Symfony содержит файл приложения/консоли, который можно запустить через php для выполнения некоторых задач по обслуживанию. Он также позволяет пользователям выполнять запросы DQL:
# php app/console doctrine:query:dql --hydrate=array \
'SELECT u.id, u.nameFirst, u.nameLast FROM DatabaseBundle:User u'
array
0 =>
array
'id' => string '1' (length=1)
'nameFirst' => string 'jaroslav' (length=8)
'nameLast' => string 'rakhmatoullin' (length=13)
1 =>
array
'id' => string '2' (length=1)
'nameFirst' => string 'Båb Kåre' (length=10)
'nameLast' => string 'Ytrefoss' (length=8)
Обратите внимание, что я выбрал три определенных столбца. Проблема, с которой я сталкиваюсь, заключается в том, что аналогичный запрос дает мне ошибку при объединении двух таблиц.
# php app/console doctrine:query:dql --hydrate=array \
'SELECT u.id , r FROM DatabaseBundle:User u JOIN u.roles r'
[Doctrine\ORM\Query\QueryException]
[Semantical Error] line 0, col -1 near 'SELECT u.id ,':
Error: Cannot select entity through identification variables
without choosing at least one root entity alias.
Следующее возвращает всего пользователя, присоединившегося к его ролям:
# php app/console doctrine:query:dql --hydrate=array \
'SELECT u, r FROM DatabaseBundle:User u JOIN u.roles r'
Очевидно, я что-то упускаю.
Есть идеи? Я был бы признателен за ссылки на соответствующие документы (по этому конкретному вопросу).
'SELECT u.id , r.* FROM DatabaseBundle:User u JOIN u.roles r'
- person jere   schedule 27.02.2012