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

Метод where класса QueryBuilder

Метод where класса QueryBuilder добавляет условие в секцию WHERE DQL-запроса. Первым параметром передаётся строка с условием, вторым - необязательное имя параметра для привязки значения. Метод возвращает сам объект QueryBuilder, что позволяет строить цепочки вызовов.

Если метод вызывается повторно, новое условие полностью заменяет предыдущее. Для добавления условий используйте andWhere и orWhere.

Синтаксис

where($predicates)

Пример

Давайте выберем статьи с идентификатором больше 1:

<?php namespace App\Controller; use App\Entity\Article; use Doctrine\ORM\EntityManagerInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; class ArticleController extends AbstractController { public function index(EntityManagerInterface $em): Response { $qb = $em->createQueryBuilder(); $qb->select('a') ->from(Article::class, 'a') ->where('a.id > :id') ->setParameter('id', 1); $res = $qb->getQuery()->getResult(); return new Response(count($res)); } } ?>

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

4

Пример

Давайте выберем статьи с логическим условием по двум полям:

<?php namespace App\Controller; use App\Entity\Article; use Doctrine\ORM\EntityManagerInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; class ArticleController extends AbstractController { public function index(EntityManagerInterface $em): Response { $qb = $em->createQueryBuilder(); $qb->select('a') ->from(Article::class, 'a') ->where('a.id > :id AND a.active = :active') ->setParameter('id', 1) ->setParameter('active', true); $res = $qb->getQuery()->getResult(); return new Response(count($res)); } } ?>

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

3

Пример

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

<?php namespace App\Controller; use App\Entity\Article; use Doctrine\ORM\EntityManagerInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; class ArticleController extends AbstractController { public function index(EntityManagerInterface $em): Response { $qb = $em->createQueryBuilder(); $expr = $qb->expr(); $qb->select('a') ->from(Article::class, 'a') ->where( $expr->andX( $expr->gt('a.id', ':id'), $expr->eq('a.active', ':active') ) ) ->setParameter('id', 1) ->setParameter('active', true); $res = $qb->getQuery()->getResult(); return new Response(count($res)); } } ?>

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

3

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

  • класс QueryBuilder,
    который строит DQL-запросы в Doctrine
  • метод andWhere,
    который добавляет условие через AND
  • метод orWhere,
    который добавляет условие через OR
  • метод setParameter,
    который привязывает значение к параметру
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить