开发者

Doctrine DQL Reserved Words as entity names

开发者 https://www.devze.com 2023-03-06 12:47 出处:网络
Using Doctrine 2. I have an entity called \'size\' and I\'m trying to form some DQL (using the QueryBuilder) to pull these entities from the database.

Using Doctrine 2.

I have an entity called 'size' and I'm trying to form some DQL (using the QueryBuilder) to pull these entities from the database.

It looks like 'Size' is a reserved word http://www.doctrine-project.org/docs/orm/2.0/en/reference/dql-doctrine-query-language.html#id3

I'm unable to find a way to escape the entity name (I've tried backticks and double quotes)

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

Executing the above results in:

Fatal error: Uncaught exception 'Doctrine\ORM\Query\QueryException' with message '[Syntax Error] line 0, col 53: Error: Expected IdentificationVariable | StateFieldPathExpression | AggregateExpression | "(" Subselect ")" | ScalarExpression, got 'si开发者_运维知识库ze'' 

It looks like where the manual talks about escaping reserved words - it is referring to column and table names. Can anyone shed any light on this? Is it impossible to used reserved (in DQL) words as entity names?

Thanks


Using an alias I was able to overcome this problem.

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

I am not using straight DQL, but using the queryBuilder instead, the above solution works there too.

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

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号