如何创建一个NOT IN where子句Doctrine_Query?

时间:2012-04-19 16:39:44

标签: mysql symfony1 doctrine

我正在使用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是纯数字。

我无法找出该子句的正确语法。感谢

1 个答案:

答案 0 :(得分:2)

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

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