我是laravel的新手。我一直在使用不同类型用户的laravel 5应用程序。我需要有关我的视图的不同部分当前登录的用户类型的信息:
目前,我已经在各种控制器方法和用户对象上做了类似的事情,我可以确定在我的视图中它是哪种类型的用户:
在控制器中:
public function someMethod(){
$user = Auth::user();
return view('applications.show', compact('user'));
}
在视图中:
if($user->is_manager)
// do this
else if($user->is_admin)
// do that
因为我在各种视图中需要有关用户类型的信息,所以我一直在几个地方调用Auth::user()
,我开始认为这会在数据库上增加一些负载。是否最好将用户类型存储在会话变量中,以及我应该在会话中存储哪种数据?
答案 0 :(得分:1)
将它存储在会话中不会是一个问题。
在is_manager
课程的User
函数中,您可以执行以下操作...
public function is_manager()
{
// Check if the session has been set first.
if(\Session::has('is_manager')) {
return \Session::get('is_manager');
}
// Do your necessary logic to determine if the user is a manager, ex...
$is_manager = $this->roles()->where('name', '=', 'manager')->count() == 1;
// Drop it in the session
\Session::put('is_manager', $is_manager);
return $is_manager;
}
请记住,如果您的会话驱动程序设置为数据库,那么这显然无济于事。
答案 1 :(得分:0)
我们按如下方式组织了常见的模型调用;