【发布时间】:2017-01-12 14:51:52
【问题描述】:
教义查询生成器和 NOT IN 语句存在一些问题
我的表格有四列和一些数据:
id | directory_id| user_id | role_id
1 1 10 null
2 1 5 null
3 1 null 1
4 1 7 null
我想选择不在两个给定 id 数组中的所有字段。
$userIds = [10, 5];
$roleIds = [1];
我的查询:
$this->createQueryBuilder('da')
->where('da.directory = :directory')
->andWhere('da.user NOT IN (:userIds)')
->andWhere('da.role NOT IN (:roleIds)')
->setParameters([
'directory' => $directory,
'userIds' => $userIds,
'roleIds' => $roleIds,
])
->getQuery()
->getResult();
据我了解,它应该返回最后一行 (#id 4),但它没有。
也许有人知道出了什么问题?
【问题讨论】:
-
NOT IN 在涉及 NULL 时有点棘手。如果返回 NULL,则 NOT IN 变为 false,并且根本不返回任何行。这就是为什么我通常不存在。
标签: php sql doctrine-orm