Метод orWhere
Метод orWhere класса QueryBuilder добавляет условие через OR в секцию WHERE запроса. Первым параметром передаётся строка условия, например 'u.status = :status'. Если до этого уже были добавлены условия через where или andWhere, то новое условие объединяется с ними логическим оператором OR.
Синтаксис
orWhere(string $predicate, mixed $value = null): self
Пример
Давайте выберем статьи, у которых status равен 'active' или views больше 100:
<?php
namespace AppRepository;
use AppEntityArticle;
use DoctrineBundleDoctrineBundleRepositoryServiceEntityRepository;
use DoctrinePersistenceManagerRegistry;
class ArticleRepository extends ServiceEntityRepository
{
public function __construct(ManagerRegistry $registry)
{
parent::__construct($registry, Article::class);
}
public function findActiveOrPopular(): array
{
$qb = $this->createQueryBuilder('a');
$qb->where('a.status = :status')
->orWhere('a.views > :views')
->setParameter('status', 'active')
->setParameter('views', 100);
return $qb->getQuery()->getResult();
}
}
?>
Результат выполнения кода:
["article 1", "article 2", "article 3"]
Пример
Давайте объединим несколько условий через orWhere для поиска по названию или тексту:
<?php
namespace AppRepository;
use AppEntityArticle;
use DoctrineBundleDoctrineBundleRepositoryServiceEntityRepository;
use DoctrinePersistenceManagerRegistry;
class ArticleRepository extends ServiceEntityRepository
{
public function __construct(ManagerRegistry $registry)
{
parent::__construct($registry, Article::class);
}
public function search(string $query): array
{
$qb = $this->createQueryBuilder('a');
$qb->where('a.title = :query')
->orWhere('a.text = :query')
->setParameter('query', $query);
return $qb->getQuery()->getResult();
}
}
?>
Результат выполнения кода для $query = 'abcde':
["abcde"]
Смотрите также
-
класс
QueryBuilder,
который строит DQL-запросы -
метод
where,
который добавляет первое условие в секцию WHERE -
метод
andWhere,
который добавляет условие через AND -
метод
setParameter,
который привязывает значение к параметру запроса