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

Метод setParameter

Метод setParameter класса QueryBuilder привязывает значение к именованному параметру, который был использован в запросе через :name. Первым параметром передаётся имя параметра, вторым - его значение. Третий необязательный параметр задаёт тип данных Doctrine.

Синтаксис

$qb->setParameter($key, $value, $type = null);

Пример

Давайте создадим запрос с именованным параметром и привяжем к нему значение 'abcde':

<?php namespace AppController; use AppRepositoryArticleRepository; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/article', name: 'article_index')] public function index(ArticleRepository $repo): Response { $qb = $repo->createQueryBuilder('a'); $qb->select('a') ->where('a.title = :title') ->setParameter('title', 'abcde'); $res = $qb->getQuery()->getResult(); return new Response((string) count($res)); } } ?>

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

"1"

Пример

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

<?php namespace AppController; use AppRepositoryArticleRepository; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/article/range', name: 'article_range')] public function range(ArticleRepository $repo): Response { $qb = $repo->createQueryBuilder('a'); $qb->select('a') ->where('a.id > :min') ->andWhere('a.id < :max') ->setParameter('min', 1) ->setParameter('max', 5); $res = $qb->getQuery()->getResult(); return new Response((string) count($res)); } } ?>

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

"3"

Пример

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

<?php namespace AppController; use AppRepositoryArticleRepository; use DoctrineDBALTypesTypes; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/article/date', name: 'article_date')] public function byDate(ArticleRepository $repo): Response { $qb = $repo->createQueryBuilder('a'); $qb->select('a') ->where('a.createdAt > :date') ->setParameter('date', new DateTime('2024-01-01'), Types::DATETIME_MUTABLE); $res = $qb->getQuery()->getResult(); return new Response((string) count($res)); } } ?>

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

"2"

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

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