提问人:Vüsal Hüseynli 提问时间:5/29/2023 最后编辑:Vüsal Hüseynli 更新时间:5/29/2023 访问量:129
Laravel Route 模型绑定抛出 NotFoundHttpException 而不是 ModelNotFoundException
Laravel Route model binding throws NotFoundHttpException instead of ModelNotFoundException
问:
我正在对我的 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 路由 ( - ) 时,数据库中存在的有效路由一切正常。但是,如果我用 DB 中不存在的 invalid 调用它,它会抛出异常:GET
/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
Route not defined
primary
我包围在try捕获块中只是为了调试异常甚至抛出Document::findOrFail($value);
findOrFail
NotFoundHttpException
try {
Document::findOrFail($value);
}catch (\Exception $exception){
throw $exception;
}
try {
Document::findOrFail($value);
}catch (\Exception $exception){
echo get_class($exception);
}
答: 暂无答案
评论
ModelNotFoundException
$e instanceof ModelNotFoundException => new NotFoundHttpException($e->getMessage(), $e),
findOrFail
ModelNotFoundException
findOrfail
throw (new ModelNotFoundException)
Route not defined
Record not found