2014-10-31 21 views
1

我想選擇數組中給出的列,然後根據這些列進行分組,但我無法弄清楚如何通過在Doctrine中的select()傳遞數組值。我試過了一堆不同的變化,我無法讓它工作。 $因數只是一個標準數組,其列名稱爲值。在Doctrine QueryBuilder中從數組中選擇列

$qb->select(":factors") 
    ->from("Table") 
    ->where("type = :type") 
    ->groupBy(":factors") 
    ->setParameter("factors", $factors) 
    ->setParameter("type", $type); 

回答

1

參數不在SELECT聲明中使用。閱讀關於prepared statements in PDO,Doctrine只是使用這個功能。

它們僅用於與存儲的數據庫值進行比較,而不是列或表名稱。準備好的語句基本上可以幫助您避免在查詢中使用這些值,對於包含"'的字符串可能有點困難。

如果你想用你的$factors數組變量選擇statments你可以只是做

$qb->select(implode(',', $factors)) 

但在這種情況下,你必須防止自己注入攻擊。最好的辦法是在$factors中有一個允許值的白名單。

同樣適用於GROUP BY聲明。