2015-12-08 63 views
0

我是laravel的新手。我一直在为不同类型的用户开发一款laravel 5应用程序。我需要关于哪些类型的用户当前登录在我的意见的不同部分的信息:什么数据应该存储在会话变量中Laravel 5

目前,我一直在做各种控制器方法和用户对象下面的东西,我可以确定它是哪种类型的用户在我看来:

在控制器:

public function someMethod(){ 
    $user = Auth::user(); 
    return view('applications.show', compact('user')); 
} 

在View:

if($user->is_manager) 
    // do this 
else if($user->is_admin) 
    // do that 

因为我需要有关用户的信息(典型值)在不同的意见中,我一直在几个地方呼吁Auth::user(),我开始认为这会增加数据库的负担。将用户类型存储在会话变量中以及我的会话中应存储哪种数据会更好?

回答

1

这不会是将它存储在会话中的问题。

在您Useris_manager功能,你可以不喜欢以下...

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; 
} 

记住,如果你的会话驱动程序设置为数据库,那么这显然是不会帮帮我。

+0

感谢您输入@ user3158900。如果将会话驱动程序设置为数据库,为什么不能提供帮助? –

+0

因为您担心数据库上的负载。如果将会话处理程序设置为数据库,那么您仍然可以将这些调用发送到不同的表。 – user3158900

+0

哇。逻辑思维@ user3158900。我的会话驱动程序是文件,一切都工作得很好。它们是使用数据库处理程序的潜在优势吗? –

0

我们已经组织了通用模型调用如下;

  • 获取这些模型的控制器,模型,库,作曲家,命令和作业的基类。所有相关的类都从这些基类继承而来,因此拥有他们拥有的一切。
  • 主视图作曲家作为所有视图的基础数据收集器。
  • 通过Redis查询缓存。上述所有类都通过超时一小时的缓存查询来获取用户,因此每个用户每小时只能执行一次查询。
相关问题