此MySql指令有效select id "object-id" from object
我如何对Doctrine做同样的事情?我的所有测试都返回了语法错误。
$result = $this->em->createQuery(
'SELECT o.id \'object-id\'
FROM MyBundle:Object o')
->getArrayResult();
答案 0 :(得分:2)
如this issue's answer中所述:
这不起作用,因为persister使用列名作为查询的AS部分。我们不会以编程方式解决这个问题,这是对Doctrine 2的限制。
出于这个原因,我更新了文档,指出不应该使用非a-zA-Z0-9_字符(甚至引用)作为列。
所以你不应该在这里使用破折号。
答案 1 :(得分:1)
Consulting the context-free grammar DQL不支持您的语法。
SelectClause
定义:
SelectClause ::= "SELECT" ["DISTINCT"] SelectExpression {"," SelectExpression}*
SelectExpression
定义(最后见AliasResultVariable
):
SelectExpression ::= (IdentificationVariable | ScalarExpression | AggregateExpression | FunctionDeclaration | PartialObjectExpression | "(" Subselect ")" | CaseExpression | NewObjectExpression) [["AS"] ["HIDDEN"] AliasResultVariable]
AliasResultVariable
定义:
/* Alias ResultVariable declaration (the "total" of "COUNT(*) AS total") */
AliasResultVariable = identifier
identifier
定义:
must match [a-z_][a-z0-9_]*
因此,您的案例中的正确语法应为:
$result = $this->em
->createQuery('SELECT o.id AS object_id FROM MyBundle:Object o')
->getArrayResult();