如何在Laravel的Eloquent模型中覆盖ModelNotFoundException?

时间:2016-08-23 03:07:09

标签: laravel exception eloquent

我想知道,如果有可能,抛出自定义异常,在某些情况下/查询时未找到Laravel的Eloquent模型?

例如,如果我有Page模型,我该如何抛出自定义PageNotFound例外?

<?php 

namespace App;

use Illuminate\Database\Eloquent\Model;

class Page extends Model {
}

此模型将抛出ModelNotFoundException给定的消息:

No query results for model [App\Page].

1 个答案:

答案 0 :(得分:4)

app/Exceptions/Handler.php中尝试将以下代码添加到渲染函数的顶部

  public function render($request, Exception $e)
        {
            if ($e
                instanceof
                \Illuminate\Database\Eloquent\ModelNotFoundException) 
            {
              abort(404);
            }

            return parent::render($request, $e);
        }

修改
捕获ModelNotFoundException对象后,可以在其上调用 getModel() 以获取模型的类名。