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

Исключение NoResultException

Исключение NoResultException относится к классу DoctrineORMNoResultException и выбрасывается Doctrine ORM при вызове методов getSingleResult или getOneOrNullResult, если запрос не вернул ни одной записи. Оно наследуется от RuntimeException и реализует интерфейс Throwable. Параметров у исключения нет: при выбросе передаётся только текстовое сообщение об ошибке.

Синтаксис

use DoctrineORMNoResultException; throw new NoResultException('No result was found.');

Пример

Давайте вызовем метод getSingleResult для запроса, который не находит ни одной записи:

<?php namespace AppRepository; use AppEntityArticle; use DoctrineBundleDoctrineBundleRepositoryServiceEntityRepository; use DoctrinePersistenceManagerRegistry; use DoctrineORMNoResultException; class ArticleRepository extends ServiceEntityRepository { public function __construct(ManagerRegistry $registry) { parent::__construct($registry, Article::class); } public function findOneByTitle(string $title): ?Article { try { return $this->createQueryBuilder('a') ->where('a.title = :title') ->setParameter('title', $title) ->getQuery() ->getSingleResult(); } catch (NoResultException $e) { return null; } } } ?>

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

null

Пример

Давайте рассмотрим выброс исключения без перехвата в контроллере:

<?php namespace AppController; use AppEntityArticle; use DoctrineORMEntityManagerInterface; use DoctrineORMNoResultException; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/article', name: 'article_show')] public function show(EntityManagerInterface $em): Response { try { $article = $em->createQuery( 'SELECT a FROM AppEntityArticle a WHERE a.title = :title' ) ->setParameter('title', 'abcde') ->getSingleResult(); return new Response($article->getTitle()); } catch (NoResultException $e) { return new Response('no result', 404); } } } ?>

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

"no result"

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

  • исключение NonUniqueResultException,
    которое выбрасывается при нескольких результатах
  • исключение EntityNotFoundException,
    которое выбрасывается при отсутствии сущности
  • исключение NotFoundHttpException,
    которое возвращает ответ 404
  • исключение FlattenException,
    которое преобразует исключение в массив
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить