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

Класс Expr

Класс Expr находится в пространстве имён Doctrine\ORM\Query\Expr и предоставляет набор методов для построения частей DQL-запросов через QueryBuilder. С его помощью удобно составлять условия WHERE, HAVING и другие выражения, не прибегая к ручному написанию строк. Экземпляр класса доступен через метод expr у QueryBuilder.

Синтаксис

$qb->expr()->method(args)

Пример

Давайте построим условие равенства для поля status сущности Article:

<?php namespace App\Repository; use App\Entity\Article; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\Persistence\ManagerRegistry; class ArticleRepository extends ServiceEntityRepository { public function __construct(ManagerRegistry $registry) { parent::__construct($registry, Article::class); } public function findByStatus(string $status): array { $qb = $this->createQueryBuilder('a'); $expr = $qb->expr()->eq('a.status', ':status'); $qb->where($expr) ->setParameter('status', $status); return $qb->getQuery()->getResult(); } } ?>

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

["article", "abcde"]

Пример

Давайте объединим несколько условий с помощью метода andX:

<?php namespace App\Repository; use App\Entity\Article; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\Persistence\ManagerRegistry; class ArticleRepository extends ServiceEntityRepository { public function __construct(ManagerRegistry $registry) { parent::__construct($registry, Article::class); } public function findActiveByTitle(string $title): array { $qb = $this->createQueryBuilder('a'); $expr = $qb->expr()->andX( $qb->expr()->eq('a.status', ':status'), $qb->expr()->like('a.title', ':title') ); $qb->where($expr) ->setParameter('status', 'active') ->setParameter('title', '%' . $title . '%'); return $qb->getQuery()->getResult(); } } ?>

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

["user"]

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

  • метод eq,
    который строит условие равенства
  • метод andX,
    который объединяет условия через AND
  • метод orX,
    который объединяет условия через OR
  • метод like,
    который строит условие LIKE
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить