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

Метод getSingleResult

Метод getSingleResult принадлежит классу Query и используется для получения ровно одной строки результата из базы данных. Он выполняет SQL-запрос, который вы построили через QueryBuilder или DQL. Если запрос вернёт ноль строк или больше одной, метод выбросит исключение NoResultException или NonUniqueResultException соответственно. Это удобно, когда вы точно уверены, что результат будет единственным, например, при выборке сущности по уникальному идентификатору.

Синтаксис

public function getSingleResult(): mixed

Пример

Давайте создадим Query через EntityManager и получим одну статью по её id:

<?php namespace App\Controller; use App\Entity\Article; use Doctrine\ORM\EntityManagerInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/article/{id}', name: 'article_show')] public function show(int $id, EntityManagerInterface $em): Response { $query = $em->createQuery( 'SELECT a FROM App\Entity\Article a WHERE a.id = :id' )->setParameter('id', $id); $res = $query->getSingleResult(); return new Response($res->getTitle()); } } ?>

Результат выполнения кода для адреса /article/1:

"article"

Пример

Давайте попробуем получить статью по несуществующему id и поймаем исключение:

<?php namespace App\Controller; use App\Entity\Article; use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\NoResultException; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/article/safe/{id}', name: 'article_safe')] public function safe(int $id, EntityManagerInterface $em): Response { $query = $em->createQuery( 'SELECT a FROM App\Entity\Article a WHERE a.id = :id' )->setParameter('id', $id); try { $res = $query->getSingleResult(); $text = $res->getTitle(); } catch (NoResultException $e) { $text = 'not found'; } return new Response($text); } } ?>

Результат выполнения кода для адреса /article/safe/999:

"not found"

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

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