下午SO,
如果有一种方法可以在:: findOrFail()查询执行ModelNotFoundException错误时查找/传递模型名称,我一直在尝试锻炼。
最近,在最终用户可能删除订单的应用程序中,这已经成为我的一个问题。如果有人为URL添加了书签或以其他方式尝试访问与已删除订单相关联的URL,则会抛出异常并显示404页面。
模型声明:
use Illuminate\Database\Eloquent\SoftDeletingTrait;
class Order extends Eloquent
{
use SoftDeletingTrait;
...
}
FindOrFail:
$order = $this->organisation->orders()->with('events', 'events.user', ...)->where('id', $id)->firstOrFail();
异常处理程序
use Illuminate\Database\Eloquent\ModelNotFoundException;
App::error(function(ModelNotFoundException $e)
{
return Redirect::route('404')->withMessage(modelNameHere);
});
有没有办法区分哪个模型抛出了异常并在此时出现了自定义错误。
由于
答案 0 :(得分:0)
在Controller中验证, 例如:
$ post = Post :: find($ post_id);
if(!isset($ post))
{
中止(404);
}
使用FindOrFail, 例如:
try
{
$post = Post::FindOrFail($id)
}
catch (NotFoundHttpException $e)
{
abort(404);
}
for View,Laravel使用views / errors / 404.blade.php
您可以根据需要自定义它。
答案 1 :(得分:0)
答案是是。找出导致异常的模型非常简单。捕获 ModelNotFoundException 对象后,可以在其上调用 getModel()以获取可以找到的模型的类名。