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

Метод setParameter класса Query

Метод setParameter класса Query привязывает значение к параметру запроса. Первым параметром передаётся имя или номер параметра, вторым - его значение. Третьим необязательным параметром задаётся тип данных. Метод возвращает сам объект Query, что позволяет строить цепочки вызовов.

Синтаксис

$query->setParameter(key, value, type);

Пример

Давайте создадим запрос, который выбирает статью по её id, и привяжем значение к именованному параметру:

<?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 show(EntityManagerInterface $em): Response { $dql = 'SELECT a FROM App\Entity\Article a WHERE a.id = :id'; $query = $em->createQuery($dql); $query->setParameter('id', 1); $res = $query->getOneOrNullResult(); return new Response($res->getTitle()); } } ?>

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

"article"

Пример

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

<?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 list(EntityManagerInterface $em): Response { $dql = 'SELECT a FROM App\Entity\Article a WHERE a.status = :status AND a.views > :views'; $query = $em->createQuery($dql); $query->setParameter('status', 'published'); $query->setParameter('views', 10); $res = $query->getResult(); return new Response((string) count($res)); } } ?>

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

"3"

Пример

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

<?php namespace App\Controller; use App\Entity\Article; use Doctrine\DBAL\Types\Types; use Doctrine\ORM\EntityManagerInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; class ArticleController extends AbstractController { public function recent(EntityManagerInterface $em): Response { $dql = 'SELECT a FROM App\Entity\Article a WHERE a.createdAt > :date'; $query = $em->createQuery($dql); $query->setParameter('date', new \DateTime('2024-01-01'), Types::DATETIME_MUTABLE); $res = $query->getResult(); return new Response((string) count($res)); } } ?>

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

"5"

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

  • класс Query,
    который представляет DQL-запрос
  • метод getResult,
    который возвращает массив результатов
  • метод getOneOrNullResult,
    который возвращает одну запись или null
  • метод getSingleScalarResult,
    который возвращает одно скалярное значение
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить