1

使用教义 2。

我有一个名为“大小”的实体,我正在尝试形成一些 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 中)字作为实体名称?

谢谢

4

1 回答 1

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');
于 2011-05-19T09:58:59.410 回答