Исключение EntityNotFoundException
Исключение EntityNotFoundException относится
к классу ошибок Doctrine ORM и выбрасывается
методом find или findOneBy, когда
запись с указанным идентификатором отсутствует
в базе данных. Первым параметром конструктора
передаётся текст сообщения об ошибке.
Синтаксис
<?php
use Doctrine\ORM\EntityNotFoundException;
throw EntityNotFoundException::fromClassNameAndIdentifier(
string $className,
array $identifier
);
?>
Пример
Давайте попробуем найти сущность по идентификатору и обработаем исключение:
<?php
namespace App\Controller;
use App\Entity\Article;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\ORM\EntityNotFoundException;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
class ArticleController extends AbstractController
{
public function show(EntityManagerInterface $em, int $id): Response
{
try {
$article = $em->find(Article::class, $id);
if ($article === null) {
throw EntityNotFoundException::fromClassNameAndIdentifier(
Article::class,
[$id]
);
}
return new Response($article->getTitle());
} catch (EntityNotFoundException $e) {
return new Response($e->getMessage());
}
}
}
?>
Результат выполнения кода при отсутствии записи:
"Entity of type App\Entity\Article not found."
Пример
Давайте получим класс и идентификатор ненайденной сущности:
<?php
namespace App\Controller;
use App\Entity\Article;
use Doctrine\ORM\EntityNotFoundException;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
class ArticleController extends AbstractController
{
public function info(): Response
{
$e = EntityNotFoundException::fromClassNameAndIdentifier(
Article::class,
[42]
);
echo $e->getEntityClass();
echo $e->getEntityIdentifier();
return new Response('done');
}
}
?>
Результат выполнения кода:
["App\Entity\Article", [42]]
Смотрите также
-
исключение
NotFoundHttpException,
которое возвращает ответ 404 -
исключение
NoResultException,
которое выбрасывается при пустом результате запроса -
исключение
NonUniqueResultException,
которое выбрасывается при нескольких результатах -
исключение
FlattenException,
которое преобразует исключение в ответ