我有一个项目,如果我想访问partner/X
我收到get property of non object
错误,因为我的合作伙伴比X少。
我的问题。如何告诉控制器if the result of the modelquery is empty, than throw a 404 error
?
我的代码到目前为止:
public function showPartner($id = 0){
//Only allow numerical values
if ($id > 0){
$partner = Partner::find($id);
if (empty($partner)){
return ???
}
}
}
答案 0 :(得分:3)
Laravel有一个特定的方法。如果您使用findOrFail($id)
,它将抛出Illuminate\Database\Eloquent\ModelNotFoundException
,因此您无需自己抛出异常。
如果您的意思是“向用户显示404错误”而不是字面上抛出异常,那么抓住它并abort()
:
public function showPartner($id = 0){
//Only allow numerical values
if ($id > 0){
try {
$partner = Partner::find($id);
// do your work
}
catch (Illuminate\Database\Eloquent\ModelNotFoundException $e) {
abort(404, "The Partner was not found");
}
}
}
详细了解此here。
答案 1 :(得分:1)