特定の値を持つエンティティをクエリしたいシナリオに定期的に遭遇します。
$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
ますが、実際には、この場合の結果は本当に厄介です。
パラメータがnullになる可能性がある場合、このクエリを実行するよりクリーンな方法はありますか?