Доктрина DQL Зарезервированные слова как имена сущностей - PullRequest
1 голос
/ 18 мая 2011

Использование Doctrine 2.

У меня есть сущность с именем size, и я пытаюсь сформировать некоторый DQL (используя QueryBuilder) для извлечения этих сущностей из базы данных.

Похоже, что "Размер" - зарезервированное слово http://www.doctrine -project.org / docs / orm / 2.0 / en / reference / dql-doctrine-query-language.html # id3

Я не могу найти способ избежать имени сущности (я пробовал обратные кавычки и двойные кавычки)

$dql = "SELECT product p join p.size size";

Выполнение вышеуказанных результатов приводит к:

Fatal error: Uncaught exception 'Doctrine\ORM\Query\QueryException' with message '[Syntax Error] line 0, col 53: Error: Expected IdentificationVariable | StateFieldPathExpression | AggregateExpression | "(" Subselect ")" | ScalarExpression, got 'size'' 

Похоже, что в руководстве говорится об экранировании зарезервированных слов - это относится к именам столбцов и таблиц.Кто-нибудь может пролить свет на это?Разве нельзя использовать зарезервированные (в DQL) слова в качестве имен сущностей?

Спасибо

1 Ответ

1 голос
/ 19 мая 2011

Используя псевдоним, я смог преодолеть эту проблему.

$dql = "SELECT p, sizealias FROM Product p JOIN p.size sizealias";

Я не использую прямой DQL, но вместо этого использую queryBuilder, вышеуказанное решение также работает там.

$qb->select('p, sizealias')
   ->from('Product', 'p')
   ->join('p.size', 'sizealias');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...