Мне нужно создать запрос, когда 2 поля могут быть нулевыми.
Запрос:
$qb = $this->entityManager->createQueryBuilder();
$qb->select('t')
->from('Table', 't')
->where('t.name = :name')
->andWhere('t = :country')
->andWhere('t = :language')
->setParameters([
'name' => $info->getName(),
'country' => $info->getCountry(),
'language' => $info->getLanguage()
]);
$result = $qb->getQuery()->getOneOrNullResult();
Все работает нормально, когда все поля не равны NULL, но в моем случае country
и language
могут быть нулевыми, а доктрина переводит их в запрос какwhere country = null
, который не работает, и я не получаю никакого результата, потому что он должен быть where country is null
.
Итак, мой вопрос, есть ли способ, которым доктрина может обработать его и автоматически преобразовать в is null
, когда предоставленный параметр имеет значение NULL, или мне нужно самостоятельно выполнять проверки с помощью операторов php if
?Если я сам проверю это, это довольно раздражает и подвержено ошибкам, так как вам нужно всегда знать, какие поля могут быть обнуляемыми, и делать эту проверку для каждого обнуляемого поля.
К вашему сведению: я использую Postgres