1

I am new to laravel. I have been working on a laravel 5 app with different types of users. I need information about which type of user is currently logged in different sections of my views:

Currently, I have been doing something like below on various controller methods and with the user object, I can determine which type of user it is in my view:

In Controller:

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

In View:

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

Because I need information about the user-type in various views, I have been calling Auth::user() in several places and I am beginning to think that this is adding some load on the DB. Is it better to store the user-type in a session variable and what kind of data should I be storing in my session?

2 Answers 2

2

It wouldn't be an issue storing it in the session.

In the is_manager function in your User class, you could do something like the following...

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

Keep in mind if your session driver is set to database, then this obviously isn't going to help.

Sign up to request clarification or add additional context in comments.

3 Comments

Thanks for the input @user3158900. Why is it not going to help if the session driver is set to database.
Because you are worried about the load on the database. If you set your session handler to database, you will still be making those calls, just to a different table.
Wow. Logical thinking @user3158900. My session driver is file and everything has been working just fine. Are they any potential advantage of using database handler.
0

We have organized common model calls as follows;

  • Base classes for controllers, models, libraries, composers, commands and jobs which get these models. All related classes extend from these base classes thus have everything they have.
  • Master view composer to serve as base data gatherer for all views.
  • Query caching through Redis. All the above classes get the user through a cached query with timeout of an hour thus the query is executed only once per hour per user.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.