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

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

Метод any класса Expr создаёт выражение ANY для DQL-запросов Doctrine. Оно проверяет, выполняется ли заданное условие хотя бы для одного элемента вложенной коллекции. Первым параметром передаётся выражение сравнения. Обычно применяется вместе с методами eq, gt, lt и другими операторами сравнения.

Синтаксис

$expr->any($comparison)

Пример

Давайте выберем статьи, у которых хотя бы один комментарий имеет рейтинг больше 5:

<?php namespace App\Repository; use App\Entity\Article; use Doctrine\ORM\EntityRepository; use Doctrine\ORM\Query\Expr; class ArticleRepository extends EntityRepository { public function findByCommentRating(): array { $expr = new Expr(); $qb = $this->createQueryBuilder('a'); $qb->innerJoin('a.comments', 'c'); $qb->where( $expr->any( $expr->gt('c.rating', 5) ) ); return $qb->getQuery()->getResult(); } } ?>

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

["article 1", "article 2", "article 3"]

Пример

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

<?php namespace App\Repository; use App\Entity\User; use Doctrine\ORM\EntityRepository; use Doctrine\ORM\Query\Expr; class UserRepository extends EntityRepository { public function findByPublishedArticle(): array { $expr = new Expr(); $qb = $this->createQueryBuilder('u'); $qb->innerJoin('u.articles', 'a'); $qb->where( $expr->any( $expr->eq('a.published', true) ) ); return $qb->getQuery()->getResult(); } } ?>

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

["user", "abcde", "hello"]

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

  • класс Expr,
    который создаёт выражения для DQL-запросов
  • метод all,
    который проверяет условие для всех элементов коллекции
  • метод eq,
    который создаёт выражение равенства
  • метод gt,
    который создаёт выражение больше
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить