【发布时间】:2015-12-08 10:14:03
【问题描述】:
假设我有一个名为“Manufacturer”的模型,其控制器有一个显示方法
public function show($id)
{
$manufacturer = json_decode( $this->manufacturer->find($id) );
return view('viewManufacturer', compact('manufacturer'));
}
还有一个带有 find 方法的 Eloquent 存储库
public function find($id)
{
return Manufacturer::find($id)->toJson();
}
现在,如果模型不存在或被软删除,它会给我一个致命异常
FatalErrorException in ManufacturerRepository.php line 22:
Call to a member function toJson() on null
我如何设置异常,而不是默认错误页面,它会显示一个自定义错误页面,例如“未找到制造商”。
编辑: 好吧,我实际上尝试过,但它返回一个错误。上面提到的查询只是为了演示,实际上我有另一个模型叫做车辆。并且制造商与车辆具有一对多的关系。
public function find($id, $columns1 = array('*'), $columns2 = array('*'))
{
return Manufacturer::with(['vehicles' => function($q) use ($columns2){
$q->select($columns2);
}])->get($columns1)->find($id)->toJson();
}
因此,如果我将 find 替换为 findOrFail,它会吐出一条错误消息 Call to undefined method Illuminate\Database\Eloquent\Collection::findOrFail()
【问题讨论】:
-
return Manufacturer::findOrFail($id)->toJson();如果我没记错的话,你可以用 404 错误页面捕捉到这个。 -
请用实际代码检查我的编辑,findOrFail 与关系无关。
标签: php laravel exception laravel-5 laravel-5.1