我尝试执行此查询
$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
。
有什么想法吗?
答案 0 :(得分:1)
是的,错误似乎非常合适,因为setParameter
将array
键和值都考虑在内,而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')
);