2012-10-19 40 views
1

查詢我嘗試如果我試試這個創建數組參數

$em->createQuery('select i from AcmePublicBundle:Public i where i.usuario in (9, 10)'); 

一切都很好執行這個查詢

$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... 

。但我必須通過$opc

任何想法?

回答

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

這應該工作....

1

$opc陣列應該不會是多維的。嘗試將數組傳遞這樣的:

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

代替

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