2014-02-26 49 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