2016-05-08 4 views
1

Я пытаюсь реализовать кэш в мой проект Laravel 5.0Кэширование область применения запросов в Laravel

Многие из примеров, которые я вижу в Интернете для кэширования не Scope запросов, поэтому я немного запутался. Вот запрос/метод из моей модели, которая возвращает конкатенации всех моих классов из subject_code и course_no

/** 
* Get all course codes and titles 
* Used in the autocomplete search 
* @param $query 
* @return mixed 
*/ 
public function scopeAllCourseNo($query) { 
    return $query 
     ->orderBy('course_no') 
     ->groupBy(
      DB::raw("subject_code || ' ' || course_no") 
     ) 
     ->get() 
     ; 
} 

Как первая строка методы является просто возвращением, я интересно, где я могу поставить Cache::add('', $allClasses, 30); запрос? И где я поставлю:

if (Cache::has('allClasses')) 
{ 
    return Cache::get('allClasses'); 
} 

Большое спасибо.

ответ

1

Вы не кэшируете свою модель. Кэш в вашем контроллере.

Таким образом, в вашем контроллере:

Вы можете использовать кэш добавить(), но я предпочитаю кэш :: помню(). https://laravel.com/api/5.2/Illuminate/Cache/Repository.html#method_remember

$classes = Cache::remember('classes', 60, function() { 
    return Class::allCourseNo()->get(); 
}); 
+0

О, вы совершенно правы. Это имеет общий смысл. Спасибо! – theGreenCabbage

+0

Эй, Крис. Судя по документам «Получить элемент из кеша или сохранить значение по умолчанию», я предполагаю, что это сохраняет элемент в кеше, а если существует, также получить кеш? – theGreenCabbage

+0

@ theGreenCabbage Это правильно :) – Chris

Смежные вопросы