这是我的代码:
$id = 'wrong id';
try{
$myLaravelModel = MyLaravelModel::find($id);
$myLaravelModel->done = true; //here's error
}catch (Exception $e){
return 'error';
}
并且当代码到达注释行时,我得到了错误:“从空值创建默认对象”,这是准确的,但是我认为catch块将捕获该错误并返回“错误”。为什么它不起作用?
答案 0 :(得分:6)
您需要使用findOrFail()。 MyLaravelModel::findOrFail($id)
。
正如here中所说。
未发现异常
有时候,如果找不到模型,您可能希望抛出异常。 这在路由或控制器中特别有用。
findOrFail
和firstOrFail
方法将检索查询的第一个结果; 但是,如果未找到结果,Illuminate\Database\Eloquent\ModelNotFoundException
将被抛出: