2014-02-26 52 views
2

我试图在DQL-s SELECT部分​​中使用外部参数,但由于错误而无法使用。DQL select语句中的参数(Symfony2/Doctrine)

我试图:

$query = $this->getEntityManager() 
    ->createQuery(" 
     SELECT me.column_one, :param_doesnt_work param 
     FROM CompanyMyBundle:MyEntity me 
     WHERE me.column_one = :param_one 
     AND me.column_two = :param_two 
    ")->setParameters(array(
     'param_doesnt_work' => 'A static value', 
     'param_one' => 'some param', 
     'param_two' => 'another param', 
    )); 

我想获得两列结果,“column_one”,并在选择参数(“A静态价值”的价值的价值这种情况作为参数)。

我得到以下错误:

错误:预期IdentificationVariable |标量表达式| AggregateExpression | FunctionDeclaration | PartialObjectExpression | “(”Subselect“)”| CaseExpression,得到':param_doesnt_work'

它甚至有可能在那里使用参数,或者有一个完全不同的解决方案吗?找不到任何示例。

回答

5

我刚刚有同样的问题。

这里是我找到了解决办法:

$query = $this->getEntityManager() 
->createQuery(" 
    SELECT me.column_one, (:param_doesnt_work param) 
    FROM CompanyMyBundle:MyEntity me 
    WHERE me.column_one = :param_one 
    AND me.column_two = :param_two 
")->setParameters(array(
    'param_doesnt_work' => 'A static value', 
    'param_one' => 'some param', 
    'param_two' => 'another param', 
)); 

你只要把你的参数下的括号内。

+0

从文档中丢失的小细节:)。非常感谢你! – hattila

+0

当我使用createQueryBuilder时,我必须移动括号外的“param”,像这样: ' - > select('me.ID,(:param_works)param')' – Shumoapp