Метод in класса Expr
Метод in класса Expr создаёт выражение,
которое проверяет, входит ли значение поля в заданный
набор значений. Первым параметром передаётся имя поля,
вторым - массив значений для проверки. Метод используется
при построении запросов через QueryBuilder или
Expr в Doctrine.
Синтаксис
public function in(string $field, array $values): Expr\Func
Пример
Давайте создадим запрос, который выбирает статьи,
у которых поле id входит в набор значений:
<?php
namespace App\Repository;
use App\Entity\Article;
use Doctrine\ORM\EntityRepository;
use Doctrine\ORM\QueryBuilder;
class ArticleRepository extends EntityRepository
{
public function findByIds(array $ids): array
{
$qb = $this->createQueryBuilder('a');
$qb->where($qb->expr()->in('a.id', $ids));
return $qb->getQuery()->getResult();
}
}
?>
Результат выполнения кода для $ids = [1, 2, 3]:
["article 1", "article 2", "article 3"]
Пример
Давайте создадим запрос, который выбирает статьи,
у которых поле status входит в набор строковых значений:
<?php
namespace App\Repository;
use App\Entity\Article;
use Doctrine\ORM\EntityRepository;
class ArticleRepository extends EntityRepository
{
public function findByStatuses(array $statuses): array
{
$qb = $this->createQueryBuilder('a');
$qb->where($qb->expr()->in('a.status', $statuses));
return $qb->getQuery()->getResult();
}
}
?>
Результат выполнения кода для $statuses = ['active', 'pending']:
["article", "user"]