在我的应用程序中,我从路由/ 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
答案 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);
});