我正在使用Doctrine ORM在symfony 1.4中开发。我不能使用带有id的数组创建NOT IN where子句。这是我的代码:
$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
包含排除的ID的数组$ ids是纯数字。
我无法找出该子句的正确语法。感谢
答案 0 :(得分:2)
您必须使用whereNotIn
(old doc but still ok)。
$results = Doctrine_Query::create()
->from('Asset a')
->whereNotIn('a.id', $ids)
->execute();