使用数组参数创建查询

时间:2012-10-19 08:49:20

标签: symfony doctrine-odm

我尝试执行此查询

$em->createQuery('select i from AcmePublicBundle:Public i where i.user in (:opc)');
$query->setParameter('opc', $opc);

where :opc is an array like this
$opc={array}[2]
  0 = {array}[1]
     id = "9"
  1 = {array}[1] 
     id = "10" 

我收到此错误

Notice: Undefined offset: 0 in...

如果我试试这个

$em->createQuery('select i from AcmePublicBundle:Public i where i.usuario in (9, 10)');
一切都很好。但我必须通过$opc

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

是的,错误似乎非常合适,因为setParameterarray键和值都考虑在内,而key代表字段名称。因此,您不能在此处使用矩阵。

$ids = array();
foreach ( $opc as $o ){
    $ids[] = (int)$o[1]; //be careful about data type (string, int etc)
}
$q = " .... WHERE id IN (:opc) ... ";
$q->setParameter('opc', $ids);

这应该有效....

答案 1 :(得分:1)

您的$opc数组不应该是多维的。尝试传递这样的数组:

$opc=array(
  '9',
  '10'
);

而不是

$opc=array(
  array('id'=>'9'),
  array('id'=>'10')
);