使用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中)单词用作实体名称?
由于
答案 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');