我有以下代码:
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页面。
如果我们没有身份证,我该如何重定向到某条路线。
答案 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
}
}