РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
93 of 258 menu

Метод isMemberOf класса Expr

Метод isMemberOf класса Expr создаёт выражение для проверки того, что значение поля входит в заданный набор значений или результатов подзапроса. Первым параметром передаётся имя поля или выражение, вторым - коллекция значений или объект QueryBuilder. Метод часто используется в Doctrine QueryBuilder для фильтрации данных по списку идентификаторов.

Синтаксис

public function isMemberOf(mixed $value, mixed $collection): Comparison

Пример

Давайте создадим QueryBuilder и проверим, входит ли идентификатор пользователя в массив [1, 2, 3]:

<?php namespace AppRepository; use AppEntityUser; use DoctrineBundleDoctrineBundleRepositoryServiceEntityRepository; use DoctrineORMEntityManagerInterface; use DoctrineORMQueryExpr; class UserRepository extends ServiceEntityRepository { public function __construct(EntityManagerInterface $em) { parent::__construct($em, User::class); } public function findUsersInGroup(): array { $qb = $this->createQueryBuilder('u'); $expr = new Expr(); $qb->where($expr->isMemberOf('u.id', [1, 2, 3])); return $qb->getQuery()->getResult(); } } ?>

Результат выполнения кода:

["user 1", "user 2", "user 3"]

Пример

Давайте используем подзапрос для проверки вхождения:

<?php namespace AppRepository; use AppEntityArticle; use DoctrineBundleDoctrineBundleRepositoryServiceEntityRepository; use DoctrineORMEntityManagerInterface; use DoctrineORMQueryExpr; class ArticleRepository extends ServiceEntityRepository { public function __construct(EntityManagerInterface $em) { parent::__construct($em, Article::class); } public function findArticlesByUserIds(): array { $qb = $this->createQueryBuilder('a'); $expr = new Expr(); $sub = $this->createQueryBuilder('u') ->select('u.id') ->where('u.active = :active') ->setParameter('active', true); $qb->where($expr->isMemberOf('a.userId', $sub->getDQL())); return $qb->getQuery()->getResult(); } } ?>

Результат выполнения кода:

["article 1", "article 2"]

Смотрите также

  • класс Expr,
    который создаёт выражения для QueryBuilder
  • метод in,
    который проверяет вхождение в массив
  • метод notIn,
    который проверяет отсутствие в массиве
  • метод exists,
    который проверяет существование подзапроса
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить