Laravel 5.2尝试捕获不起作用

时间:2016-05-19 16:00:58

标签: php laravel laravel-5.2

我正在尝试运行此代码:

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>

我收到错误:

enter image description here

应该是什么问题?为什么尝试抓不工作。

1 个答案:

答案 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"
    }
});