Метод findOrFail
Метод findOrFail применяется к запросу Eloquent и возвращает модель, найденную по её первичному ключу. В качестве первого параметра передаётся значение первичного ключа. Если запись не найдена, метод выбрасывает исключение Illuminate\Database\Eloquent\ModelNotFoundException, что позволяет обработать ситуацию отсутствия записи через механизм исключений.
Синтаксис
<?php
Model::findOrFail($id);
?>
Пример
Давайте найдём статью с id равным 1:
<?php
use App\Models\Article;
$article = Article::findOrFail(1);
echo $article->title;
?>
Результат выполнения кода:
"article 1"
Пример
Если запись с указанным id не существует, метод выбрасывает исключение:
<?php
use App\Models\Article;
$article = Article::findOrFail(999);
echo $article->title;
?>
Результат выполнения кода:
"Illuminate\Database\Eloquent\ModelNotFoundException"
Пример
Метод findOrFail часто используется в контроллерах для автоматической обработки ситуации, когда запись не найдена. Исключение перехватывается Laravel и возвращает страницу 404:
<?php
namespace App\Http\Controllers;
use App\Models\Article;
class ArticleController extends Controller
{
public function show($id)
{
$article = Article::findOrFail($id);
return view('article.show', ['article' => $article]);
}
}
?>
Результат выполнения кода при существующей записи:
"View rendered with article data"
Результат выполнения кода при отсутствующей записи:
"404 Not Found page"
Пример
Метод findOrFail можно использовать с дополнительными условиями через цепочку методов:
<?php
use App\Models\Article;
$article = Article::where('status', 'published')
->findOrFail(1);
echo $article->title;
?>
Результат выполнения кода:
"article 1"
Смотрите также
-
метод
find,
который возвращаетnullесли запись не найдена -
метод
firstOrFail,
который выбрасывает исключение если не найдено ни одной записи -
метод
findOr,
который выполняет callback если запись не найдена -
метод
first,
который возвращает первую найденную запись