3

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

我不知道这个子句的正确语法是什么。谢谢

4

1 回答 1

2

您必须使用whereNotIn旧文档但仍然可以)。

$results = Doctrine_Query::create()
  ->from('Asset a')
  ->whereNotIn('a.id', $ids)
  ->execute();
于 2012-04-19T16:56:42.517 回答