1

このクエリを実行しようとしています

$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

何か案は?

4

2 に答える 2

1

setParameterええ、キーと値の両方arrayを考慮し、キーはフィールド名を表すため、エラーは非常に適切なようです。したがって、ここではマトリックスを使用できません。

$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);

これはうまくいくはずです....

于 2012-10-19T09:17:19.893 に答える
1

配列は多次元であってはなりませ$opcん。次のように配列を渡してみてください。

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

それ以外の

$opc=array(
  array('id'=>'9'),
  array('id'=>'10')
);
于 2012-10-19T09:17:28.237 に答える