在Laravel中缓存范围查询

时间:2016-05-08 22:32:45

标签: php laravel caching memcached

我正在尝试将Cache实现到我的Laravel 5.0项目中

我在网上看到的许多缓存示例都不是范围查询,所以我有点困惑。这是我的模型中的一个查询/方法,它返回我的所有类' subject_codecourse_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 个答案:

答案 0 :(得分:2)

您不在模型中缓存。您在控制器中缓存。

所以在你的控制器中:

你可以使用Cache add(),但我更喜欢Cache :: remember()。 https://laravel.com/api/5.2/Illuminate/Cache/Repository.html#method_remember

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