Doctrine DQL保留字作为实体名称

时间:2011-05-18 07:46:01

标签: escaping doctrine-orm dql reserved-words

使用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 个答案:

答案 0 :(得分:1)

使用别名我能够解决这个问题。

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

我没有使用直接DQL,而是使用queryBuilder,上面的解决方案也适用于此。

$qb->select('p, sizealias')
   ->from('Product', 'p')
   ->join('p.size', 'sizealias');