2012-04-19 98 views
3

我正在使用Doctrine ORM在symfony 1.4中进行开发。我不能创建一个使用带有ID的数组的NOT IN where子句。这是我的代码:如何创建NOT IN where子句Doctrine_Query?

$results = Doctrine_Query::create() 
    ->from('Asset a') 
    ->where('a.id NOT IN (?)', implode(',', $ids)) 
    ->execute(); 

此查询所生成的SQL是这样的一个:

WHERE (a.id NOT IN ('1,5,6,7,8,9,10,11,12,13,14,15,17,18,20,24,25,26,29,30,28')) 

正如你所看到的是治疗充满了类似的字符串ID的数组。我也尝试没有阵列的内爆,但我得到这个错误:

SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens 

数组$ ids包含排除的id是一个纯数字的。

我找不出这个子句的正确语法。谢谢

回答

2

你必须使用whereNotInold doc but still ok)。

$results = Doctrine_Query::create() 
    ->from('Asset a') 
    ->whereNotIn('a.id', $ids) 
    ->execute();