Я пытаюсь поставить условный параметр в свой запрос. если orgID равно null, я не хочу, чтобы запрос использовал его как фильтр.Doctrine createQuery() условные параметры
AND (:orgID IS NULL OR o.id = :orgID)
Я борюсь, пытаясь это сделать. Что я делаю не так?
$em = $this->getEntityManager();
$query = $em->createQuery('
select count(d.id)
from \***\OrganizationBundle\Entity\Organization o
inner join \***\OrganizationBundle\Entity\Facility f
inner join \***\OrganizationBundle\Entity\Department d
where d.active = true
AND f.active = true
AND o.active = true
AND d.name LIKE :name
AND (:orgID IS NULL OR o.id = :orgID)
');
$query->setParameter(':name', '%' . $name . '%');
$query->setParameter(':orgID', $orgID);
$count = $query->getSingleScalarResult();
Что не так? Какая у вас ошибка? –
Вы делаете это слишком сложно. Проверьте orgID и просто не добавляйте его в свой запрос, если null. Просто и везде, где вам нужно. – Cerad
Это, кстати, хороший прецедент, когда класс Doctrine 'QueryBuilder' пригодится, вместо того, чтобы вручную записывать запрос в DQL. – xabbuh