DQL select语句中的参数(Symfony2 / Doctrine)

时间:2014-02-26 13:11:27

标签: php symfony doctrine-orm dql

我正在尝试在DQL-s SELECT部分​​中使用外部参数,但由于错误它不起作用。

我正在尝试:

$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'的值和Select中的param值(在这种情况下为'静态值'作为参数)。

我收到以下错误:

错误:预期识别变量| ScalarExpression | AggregateExpression |功能声明| PartialObjectExpression | “(”Subselect“)”| CaseExpression,得到':param_doesnt_work'

是否可以在那里使用参数,或者有一个完全不同的解决方案呢?找不到任何例子。

1 个答案:

答案 0 :(得分:6)

我遇到了同样的问题。

以下是我找到的解决方案:

$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',
));

您只需将参数放在括号下即可。