Php 来自ModelNotFoundException的Laravel 4.2模型名称

Php 来自ModelNotFoundException的Laravel 4.2模型名称,php,laravel,exception,model-view-controller,model,Php,Laravel,Exception,Model View Controller,Model,下午那么 我一直在尝试解决当::findOrFail()查询执行ModelNotFoundException错误时,是否有方法查找/传递模型名称 最近,在一个终端用户可能会删除订单的应用程序中,这已成为我的一个问题。如果某人已将URL标记为书签,或试图访问与已删除订单关联的URL,我将抛出异常并显示404页面 示范声明: use Illuminate\Database\Eloquent\SoftDeletingTrait; class Order extends Eloquent {

下午那么

我一直在尝试解决当::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);
});
有没有一种方法可以区分哪个模型抛出了异常,并显示一个自定义错误

谢谢

  • 控制器中的验证, 例如:

    try
    {
        $post = Post::FindOrFail($id)
    }
    
    catch (NotFoundHttpException $e)
    {
        abort(404);
    }
    
    $post=post::find($post\u id)

    如果(!isset($post)) {
    中止(404);
    }

  • 使用FindOrFail, 例如:

    try
    {
        $post = Post::FindOrFail($id)
    }
    
    catch (NotFoundHttpException $e)
    {
        abort(404);
    }
    
  • 对于视图,Laravel使用views/errors/404.blade.php

    您可以根据需要自定义它。

    答案是。找出导致异常的模型非常简单。一旦捕获了ModelNotFoundException对象,就可以对其调用getModel(),以获取可以找到的模型的类名。

    是否为模型名添加了“use”?非常感谢,这正是我要查找的。如果您碰巧知道在文档中可以找到这一点,请您为我指出正确的方向。