Привязка модели Laravel Route вызывает исключение NotFoundHttpException вместо ModelNotFoundException.Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Привязка модели Laravel Route вызывает исключение NotFoundHttpException вместо ModelNotFoundException.

Сообщение Anonymous »

Я использую привязку модели маршрута для своих маршрутов API.

Код: Выделить всё

Route::middleware('client')->group(function(){
Route::get('/documents/{document}', [DocumentController::class, 'get']);
Route::apiResource('documents', DocumentController::class)->only('store', 'destroy');
Route::post('filter', [DocumentController::class, 'filter']);
});
Контроллер документов:

Код: Выделить всё

public function get(Document $document): JsonResponse|string|null
{
// do some stuff

return response()->json([
'code' => 404,
"message" => "Some Message"
], 404);
}
Когда я получаю доступ к своему маршруту API ( - /api/documents/$uuid) с действительным $uuid, существующим в БД, все работает нормально. Но если я вызову его с недопустимым $uuid, которого нет в БД, это выдаст исключение:

Код: Выделить всё

"message": "No query results for model [App\\Models\\Document] some_uuid_here",
"exception": "Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException",
Проблема вызывает исключение NotFoundHttpException, хотя должно быть ModelNotFoundException.
Не должно быть исключения NotFoundHttpException нужно выдать сообщение, если маршрут полностью не определен?
Я не хочу показывать пользователю, что маршрут не определен, пока существует фактический маршрут, но нет записи с данным первичным ключом.
Я окружил Document::findOrFail($value); в блоке try catch только для отладки исключения, и даже findOrFail выдает NotFoundHttpException

Код: Выделить всё

try {
Document::findOrFail($value);
}catch (\Exception $exception){
throw $exception;
}
Изображение

Код: Выделить всё

try {
Document::findOrFail($value);
}catch (\Exception $exception){
echo get_class($exception);
}
Изображение


Подробнее здесь: https://stackoverflow.com/questions/763 ... delnotfoun
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»