从Doctrine QueryBuilder中的数组中选择列

时间:2014-10-31 05:09:05

标签: php doctrine

我想选择数组中给出的列,然后根据这些列进行分组,但我无法弄清楚如何通过Doctrine中的select()传递数组值。我已经尝试了一些不同的变体,我无法让它工作。 $ factors只是一个标准数组,列名为值。

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

1 个答案:

答案 0 :(得分:1)

不能在SELECT语句中使用参数。阅读prepared statements in PDO,Doctrine正在使用此功能。

它们仅用于与存储的数据库值进行比较,而不是用于比较列名或表名。准备好的语句基本上可以帮助您转义查询中使用的那些值,对于包含"'的字符串来说可能有点困难。

如果您想将$factors数组用于变量选择状态,您可以执行

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

但在这种情况下,你必须自己防止注射攻击。最好的方法是在$factors中列出允许值的白名单。

同样适用于GROUP BY声明。