我正在尝试运行此代码:
Route::group(["prefix" => "{user}", "middleware" => "web"], function () {
Route::get("/", function (User $user) {
try {
return $user;
} catch (\Exception $e) {
echo "ads";
}
});
Route::get("/photos", function (User $user) {
return $user->albums;
});
});
所以在上面的代码中,当用户输入这样的url时,我正在使用Route Binding:http://localhost:8000/myusername然后它将显示该用户信息,但如果用户不可用,我只想捕获异常,这样就无法正常工作。< / p>
我收到错误:
应该是什么问题?为什么尝试抓不工作。
答案 0 :(得分:1)
你的尝试方式无效。您必须bind
,以显示Laravel如何按名称查询,而不是ID。
在Route::group
:
Route::bind('user', function($value)
{
return User::where('name', $value)->first();
});
您可以删除try / catch。如果您想检查您的模型是否已找到,请使用如下:
Route::get("/", function ($id) {
try {
return User::findOrFail($id);
} catch(ModelNotFoundException $e) {
echo "ads"
}
});