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

Исключение ModelNotFoundException

Исключение ModelNotFoundException выбрасывается Laravel, когда Eloquent не может найти модель по заданному идентификатору или условию. Чаще всего возникает при использовании методов findOrFail, firstOrFail, firstWhere с флагом получения или при попытке получить связанную модель, которая не существует. Исключение наследуется от Illuminate\Database\Eloquent\ModelNotFoundException.

Синтаксис

<?php use Illuminate\Database\Eloquent\ModelNotFoundException; // Обычный вызов, который может выбросить исключение Model::findOrFail($id); ?>

Пример

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

<?php use AppModelsArticle; try { $article = Article::findOrFail(999); echo $article->title; } catch (ModelNotFoundException $e) { echo "Article not found"; } ?>

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

"Article not found"

Пример

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

<?php use AppModelsUser; use Illuminate\Database\Eloquent\ModelNotFoundException; try { $user = User::where('email', 'notfound@example.com')->firstOrFail(); echo $user->name; } catch (ModelNotFoundException $e) { echo "User with this email not found"; } ?>

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

"User with this email not found"

Пример

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

<?php use AppModelsArticle; use Illuminate\Database\Eloquent\ModelNotFoundException; try { $article = Article::with('category')->findOrFail(1); if ($article->category) { echo $article->category->name; } else { echo "Category not found"; } } catch (ModelNotFoundException $e) { echo "Article not found"; } ?>

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

"Category not found"

Пример

Давайте обработаем исключение в контроллере и вернём 404 страницу:

<?php namespace AppHttpControllers; use AppModelsArticle; use Illuminate\Database\Eloquent\ModelNotFoundException; class ArticleController extends Controller { public function show($id) { try { $article = Article::findOrFail($id); return view('article.show', ['article' => $article]); } catch (ModelNotFoundException $e) { abort(404, 'Article not found'); } } } ?>

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

"HTTP 404 - Article not found"

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

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