由於其他(舊)的問題沒有得到適當的答案,我會再次嘗試:結合IS NULL和:在學說2 DQL值
我經常跨場景,在這裏我要查詢的到來實體與特定值:
$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,實際情況是,在這種情況下結果確實令人討厭。
另外,在舊的問題中給出的示例在DQL中不起作用,因爲NULL!= NULL。
->setParameter('parent', (is_null($parent) ? "NULL" : $parent));
我也試過這種方式,什麼好心的人提供的,但是這會給出一個NonUniqueResult例外,因爲當父母爲1爲例,它會給雙重結果。
SELECT e
FROM Entity e
WHERE (e.parent = :parent OR e.parent IS NULL)
有沒有執行此查詢一個更清潔的方式,當參數可以爲空?
其實我想這也是一個,因爲它是有道理的。 Unfornately它給了我一個NonUniqueResult異常,因爲當我的參數不爲null時它會給我2個結果。或者我錯過了什麼? – Matheno 2015-02-09 09:13:37