Метод orX класса Expr
Метод orX класса Expr объединяет
переданные условия через логическое ИЛИ.
Он принимает произвольное количество аргументов -
объектов Expr или строковых условий -
и возвращает новое составное выражение.
Условие считается выполненным, если истинно
хотя бы одно из переданных выражений.
Синтаксис
$expr->orX($x, $y, ...)
Пример
Давайте выберем статьи, у которых id равен
1 или views больше 100:
<?php
namespace AppRepository;
use AppEntityArticle;
use DoctrineBundleEntityManager;
use DoctrineORMEntityRepository;
use DoctrineORMQueryExprExpr;
class ArticleRepository extends EntityRepository
{
public function findByOrCondition(): array
{
$qb = $this->createQueryBuilder('a');
$qb->where(
$qb->expr()->orX(
$qb->expr()->eq('a.id', 1),
$qb->expr()->gt('a.views', 100)
)
);
return $qb->getQuery()->getResult();
}
}
?>
Результат выполнения кода:
["article 1", "article 2", "article 3"]
Пример
Давайте объединим три условия: title равен
'abcde', active равен true
или views меньше 50:
<?php
namespace AppRepository;
use AppEntityArticle;
use DoctrineBundleEntityManager;
use DoctrineORMEntityRepository;
use DoctrineORMQueryExprExpr;
class ArticleRepository extends EntityRepository
{
public function findByMultiOr(): array
{
$qb = $this->createQueryBuilder('a');
$qb->where(
$qb->expr()->orX(
$qb->expr()->eq('a.title', ':title'),
$qb->expr()->eq('a.active', ':active'),
$qb->expr()->lt('a.views', 50)
)
);
$qb->setParameter('title', 'abcde');
$qb->setParameter('active', true);
return $qb->getQuery()->getResult();
}
}
?>
Результат выполнения кода:
["article 1", "article 2"]