Получить информацию из базы данных и вывести в представление только один|первый раз

Я пытаюсь получить некоторую информацию из базы данных, отфильтровать эту информацию на основе вошедшего в систему пользователя, а затем вернуть правильную информацию в представление для построения меню на основе групп пользователей | ролей | разрешений.

Это должно произойти только один раз и сразу после входа пользователя в приложение. Для меню я использую этот пакет, а для пользователей/групп/разрешений я используя Cartalyst Sentinel.

Я мог бы использовать Middleware, но я думаю, что его цель не в том, чтобы получить информацию из БД и построить некоторый вывод или View Composers, но я не хочу, чтобы это выполнялось все время, когда вызывается макет или заголовок, что почти всегда или все время я бы сказал или я могу использовать Service Provider я не знаю много об этом последнем.

Итак, имея эту информацию: что бы вы сделали в этом случае? как бы вы построили меню и вывели на layout или section@header?


person ReynierPM    schedule 29.05.2016    source источник
comment
почему вы не получаете информацию из базы данных, фильтруете ее и делаете, что хотите, затем кешируете ее, и даже если страница загружается снова, все вышеперечисленное не произойдет (пока не произойдут изменения в текущей модели, и вы можете сделать это несколько способы)   -  person Achraf Khouadja    schedule 30.05.2016
comment
@AchrafKhouadja вот о чем мой вопрос, чего я не знаю, так это как кэшировать эту информацию, если вы можете написать небольшой пример, это будет идеально   -  person ReynierPM    schedule 30.05.2016


Ответы (1)


Вот простой пример

Предположим, вы хотите получить пользователя с его ролями и кэшировать результаты.

public function test() {
//getting authenticated user with roles
$userwithroles = Cache::remember('users-'.Auth::user()->id, 60, function() {
return User::with('roles')->where('id', Auth::user()->id)->get();
});
  return View('home')->with('$data',$userwithroles);
}

Теперь запрос будет выполняться только каждый час, вы можете посмотреть документацию laravel, чтобы узнать больше трюков и других интересных вещей.

Кэширование в laravel

Вы также можете проверить это видео (это laravel 4, но почти то же самое)

Я надеюсь, что это может помочь

person Achraf Khouadja    schedule 30.05.2016