2015-12-08 85 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查詢緩存。上述所有類都通過超時一小時的緩存查詢來獲取用戶,因此每個用戶每小時只能執行一次查詢。
相關問題