如果对象不存在则例外

时间:2014-05-29 17:57:01

标签: laravel laravel-4

在我的应用程序中,我从路由/ URL获取id。如果没有具有此ID的对象,我应该在控制器中做什么?

我最喜欢的解决方案是抛出404.这是个好主意吗?这个常见问题有帮助吗?

// url /groups/1

public function group($group_id)
{
    if (! Group::find($group_id)) {
        App::abort(404);
    }
 }

在Django中,这个问题有一个捷径功能。 https://docs.djangoproject.com/en/1.6/topics/http/shortcuts/#get-object-or-404

1 个答案:

答案 0 :(得分:3)

Eloquent::findOrFail($pk)正是您要找的。这将抛出ModelNotFoundException。以下是我如何设置它:

<强>控制器

public function group($group_id)
{
    // This will throw an App::error() when $group_id doesn't exist
    $group = Group::findOrFail($group_id);
}

路线(或类似的东西)

App::error(function(Illuminate\Database\Eloquent\ModelNotFoundException $e)
{
    // This will be ran when ::findOrFail() doesn't find an object
    App::abort(404);
});