我试图阻止一个登录的用户通过在我的控制器中使用这个方法来访问一些用户在nextokin表中的信息
public function checkValidTenant($tenant_id){
$check = NextOfKin::where('tenant_id', '=', $tenant_id)->findOrFail('tenant_id');
return $check;
}
在显示此类页面的方法中,我添加了以下代码作为限制
if($this->checkValidTenant(\Auth::user()->id)){
$rents = RentDue::where('tenant_id', '=', \Auth::user()->id)->get();
return view('/tenant/rent', compact('rents'));
}else{
return redirect()->route('tenant/profile');
}
我也这样试过
if($this->checkValidTenant(\Auth::user()->id) === true){
$rents = RentDue::where('tenant_id', '=', \Auth::user()->id)->get();
return view('/tenant/rent', compact('rents'));
}else{
return redirect()->route('tenant/profile');
}
这是路线
Route::get('rent', 'TenantController@rent');
问题是,当我尝试使用满足条件的登录用户访问页面时,它将抛出以下错误
Sorry, the page you are looking for could not be found.
但我注意到,只有当我删除此限制时,才会显示此页面。如何解决这个问题?
1条答案
按热度按时间lztngnrs1#
findOrFail
当找不到记录时抛出404。如果你把那部分改成get
或者first
你可能会得到想要的结果。有时,如果找不到模型,您可能希望抛出异常。这在路由或控制器中特别有用。这个
findOrFail
以及firstOrFail
方法将检索查询的第一个结果;但是,如果没有找到结果,则Illuminate\Database\Eloquent\ModelNotFoundException
将被抛出。文档(向下滚动到“找不到异常”部分)