我有以下代码。
private function GetCountry($CountryID) {
$Country = \App\Models\CountryModel
::where('CountryID', $CountryID)
->where('IsPredefined', false)
->first();
if($Country == null) {
\App::abort(404);
return;
}
return $Country;
}
如果添加了条件以确保用户是否正在尝试查询字符串,其数据库中不存在其关联记录。如果我删除if条件检查,我在Blade中得到以下错误。
尝试获取非对象的属性
根据控制器的不同,使用不同的模型定义相同的功能。
问题:我可以减少代码吗?我想保留404错误
答案 0 :(得分:1)
为什么不使用firstOrFail()来检查你呢
如果没有找到结果,将抛出Illuminate \ Database \ Eloquent \ ModelNotFoundException
如果未捕获到异常,则会自动将404 HTTP响应发送回用户,因此在使用这些方法时,无需编写显式检查以返回404响应: