我经常遇到一个场景,我想查询一个具有特定值的实体:
$query = $em->createQuery('SELECT e FROM Entity e WHERE e.parent = :parent');
$query->setParameter('parent', $parent);
通常,这个值可以为 NULL,但WHERE e.parent = NULL
不会产生任何结果,迫使我像这样修改:
if ($parent === null) {
$query = $em->createQuery('SELECT e FROM Entity e WHERE e.parent = IS NULL');
}
else {
$query = $em->createQuery('SELECT e FROM Entity e WHERE e.parent = :parent');
$query->setParameter('parent', $parent);
}
虽然我理解 SQL / DQL 背后的基本原理NULL != NULL
,但事实是,在这种情况下,结果真的很烦人。
当参数可以为空时,是否有更简洁的方法来执行此查询?