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

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

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

Параметры можно задавать как позиционно, передавая массив с числовыми ключами, так и по именам. Этот метод удобен, когда в запросе используется несколько плейсхолдеров и нужно задать их значения за один раз.

Синтаксис

setParameters(array $params)

Пример

Давайте создадим запрос с двумя именованными параметрами и установим их через setParameters:

<?php namespace App\Repository; use App\Entity\Article; use Doctrine\ORM\EntityRepository; class ArticleRepository extends EntityRepository { public function findByTitleAndStatus(string $title, bool $active): array { $qb = $this->createQueryBuilder('a'); $qb->select('a') ->where('a.title = :title') ->andWhere('a.active = :active') ->setParameters([ 'title' => $title, 'active' => $active, ]); return $qb->getQuery()->getResult(); } } ?>

Пример

Давайте установим позиционные параметры через setParameters с числовыми ключами:

<?php namespace App\Repository; use App\Entity\Article; use Doctrine\ORM\EntityRepository; class ArticleRepository extends EntityRepository { public function findByRange(int $min, int $max): array { $qb = $this->createQueryBuilder('a'); $qb->select('a') ->where('a.id > ?1') ->andWhere('a.id < ?2') ->setParameters([1 => $min, 2 => $max]); return $qb->getQuery()->getResult(); } } ?>

Пример

Давайте посмотрим, как получить DQL-запрос после установки параметров:

<?php namespace App\Repository; use App\Entity\Article; use Doctrine\ORM\EntityRepository; class ArticleRepository extends EntityRepository { public function getDqlWithParams(): string { $qb = $this->createQueryBuilder('a'); $qb->select('a') ->where('a.title = :title') ->andWhere('a.active = :active') ->setParameters([ 'title' => 'abcde', 'active' => true, ]); return $qb->getDQL(); } } ?>

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

"SELECT a FROM App\Entity\Article a WHERE a.title = :title AND a.active = :active"

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

  • класс QueryBuilder,
    который строит DQL-запросы
  • метод setParameter,
    который устанавливает один параметр запроса
  • метод where,
    который задаёт условие выборки
  • метод getDQL,
    который возвращает текст DQL-запроса
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить