Построитель запросов доктрины, где утверждение на обнуляемом поле - PullRequest
0 голосов
/ 21 декабря 2018

Мне нужно создать запрос, когда 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...