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

Класс Query

Класс Query представляет собой DQL-запрос в Doctrine ORM. Объект класса создаётся через метод createQuery у EntityManager. Первым параметром передаётся строка DQL-запроса. Класс позволяет задать параметры через setParameter, ограничить выборку методами setMaxResults и setFirstResult, а также выполнить запрос методами getResult, getOneOrNullResult, getSingleResult, getSingleScalarResult, getArrayResult, getScalarResult.

Синтаксис

$query = $entityManager->createQuery($dql); $query->setParameter($key, $value); $res = $query->getResult();

Пример

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

<?php namespace AppController; use AppEntityArticle; use DoctrineORMEntityManagerInterface; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; class ArticleController extends AbstractController { public function index(EntityManagerInterface $em): Response { $query = $em->createQuery('SELECT a FROM AppEntityArticle a'); $res = $query->getResult(); return new Response(count($res)); } } ?>

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

5

Пример

Давайте передадим параметр в запрос через setParameter:

<?php namespace AppController; use AppEntityArticle; use DoctrineORMEntityManagerInterface; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; class ArticleController extends AbstractController { public function user(EntityManagerInterface $em): Response { $query = $em->createQuery('SELECT a FROM AppEntityArticle a WHERE a.title = :title'); $query->setParameter('title', 'hello'); $res = $query->getResult(); return new Response(count($res)); } } ?>

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

1

Пример

Давайте ограничим выборку через setMaxResults и setFirstResult:

<?php namespace AppController; use AppEntityArticle; use DoctrineORMEntityManagerInterface; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; class ArticleController extends AbstractController { public function list(EntityManagerInterface $em): Response { $query = $em->createQuery('SELECT a FROM AppEntityArticle a ORDER BY a.id ASC'); $query->setMaxResults(2); $query->setFirstResult(1); $res = $query->getResult(); return new Response(count($res)); } } ?>

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

2

Пример

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

<?php namespace AppController; use AppEntityArticle; use DoctrineORMEntityManagerInterface; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; class ArticleController extends AbstractController { public function count(EntityManagerInterface $em): Response { $query = $em->createQuery('SELECT COUNT(a.id) FROM AppEntityArticle a'); $res = $query->getSingleScalarResult(); return new Response($res); } } ?>

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

5

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

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