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

Метод getOneOrNullResult

Метод getOneOrNullResult класса Query выполняет запрос и возвращает первую найденную запись. Если запись не найдена, метод возвращает null. Метод не принимает параметров и бросает исключение, если запрос вернул больше одной записи.

Синтаксис

$res = $query->getOneOrNullResult();

Пример

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

<?php namespace AppRepository; use AppEntityArticle; use DoctrineBundleDoctrineBundleRepositoryServiceEntityRepository; use DoctrinePersistenceManagerRegistry; class ArticleRepository extends ServiceEntityRepository { public function __construct(ManagerRegistry $registry) { parent::__construct($registry, Article::class); } public function findOneById(int $id): ?Article { $query = $this->createQueryBuilder('a') ->where('a.id = :id') ->setParameter('id', $id) ->getQuery(); return $query->getOneOrNullResult(); } } ?>

Пример

Давайте используем метод в контроллере и вернём результат:

<?php namespace AppController; use AppRepositoryArticleRepository; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/article/{id}', name: 'article_show')] public function show(int $id, ArticleRepository $repository): Response { $res = $repository->findOneById($id); if ($res === null) { return new Response('article not found'); } return new Response($res->getTitle()); } } ?>

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

abcde

Пример

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

<?php namespace AppController; use AppRepositoryArticleRepository; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/article/{id}', name: 'article_show')] public function show(int $id, ArticleRepository $repository): Response { $res = $repository->findOneById($id); if ($res === null) { return new Response('article not found'); } return new Response($res->getTitle()); } } ?>

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

"article not found"

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

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