Как настроить сообщение об ошибке на Symfony2 - PullRequest
0 голосов
/ 27 декабря 2011

Я пытаюсь использовать DQL для создания запроса между отношением ManyToMany, вот фрагмент моего кода:

$em = $this->getDoctrine()->getEntityManager();
$query = $em->createQuery("SELECT * FROM TestGroupBundle:Question");

Это действительно простая строка SQL, но я всегда получаю эту странную ошибку:

[Syntax Error] line 0, col 7: Error: Expected IdentificationVariable | StateFieldPathExpression | AggregateExpression | "(" Subselect ")" | ScalarExpression, got '*'

500 Внутренняя ошибка сервера - QueryException

Может кто-нибудь сказать мне, что это значит, пожалуйста, и как это исправить?Спасибо

Ответы [ 2 ]

2 голосов
/ 27 декабря 2011

Вы смешиваете SQL и DQL .В DQL нет "*", так как вы работаете с вашей объектной моделью.Правильный синтаксис будет "SELECT q FROM TestGroupBundle:Question q".Результат обернут в \Doctrine\Common\Collections\ArrayCollection объект.Вы можете перебрать объект, чтобы получить свои результаты.

Есть одна важная вещь, о которой нужно помнить о DQL:

Распространенная ошибка для начинающих - ошибочно принять DQL за то, что он всего лишь какой-тоформа SQL и, следовательно, пытается использовать имена таблиц и столбцов или объединить произвольные таблицы вместе в запросе.Вам нужно думать о DQL как о языке запросов для вашей объектной модели, а не для вашей реляционной схемы.

0 голосов
/ 27 декабря 2011

Doctrine не всегда правильно обрабатывает ярлыки пространства имен.Попробуйте использовать полное пространство имен вместо TestGroupBundle:Question

...