Laravel findorfail()重定向

时间:2016-07-19 12:27:07

标签: php laravel

我有以下代码:

    public function showTestProfile($id){
        $auth = Auth::user();
        $tests = App\Test::findorfail($id);
        return view('profile',compact('auth','tests','members'));
    }

如果我们在数据库表中有一个id,那么将会出现findorfail()

但是如果我们不像这样在网址中添加现有的ID:

http://NewPro.dev/user-profile/24645645456

然后没有查询找到larvel页面。

如果我们没有身份证,我该如何重定向到某条路线。

2 个答案:

答案 0 :(得分:4)

将此添加到您在控制器中的用途

use Illuminate\Database\Eloquent\ModelNotFoundException;//find or fail error exception class.

并将当前代码修改为此

 public function showTestProfile($id){
    try{
        $auth = Auth::user();
        $tests = App\Test::findorfail($id);
        return view('profile',compact('auth','tests','members'));
    }
    catch(ModelNotFoundException $err){
        //if id doesnt exist it will skip return view('profil..
        //and excute whatever in this section
    }
}

答案 1 :(得分:0)

将find替换为find,然后当id不存在时,$ tests返回null。

 public function showTestProfile($id){

         $auth = Auth::user();

        $tests = App\Test::find($id);
           if(is_null($tests))
         {
           return redirect()->to('index');
         }

         return view('profile',compact('auth','tests','members'));

     }

以下流程优于上述流程

public function showTestProfile($id){
    try{
        $auth = Auth::user();
        $tests = App\Test::findorfail($id);
        return view('profile',compact('auth','tests','members'));
    }
    catch(ModelNotFoundException $err){
        //if id doesnt exist it will skip return view('profil..
        //and excute whatever in this section
    }
}