Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在Laravel中缓存作用域查询_Php_Laravel_Caching_Memcached - Fatal编程技术网

Php 在Laravel中缓存作用域查询

Php 在Laravel中缓存作用域查询,php,laravel,caching,memcached,Php,Laravel,Caching,Memcached,我正在尝试在我的Laravel5.0项目中实现缓存 我在网上看到的许多缓存示例都不是范围查询,所以我有点困惑。这里有一个来自我的模型的查询/方法,它返回我所有类的subject\u code和course\u no /** * Get all course codes and titles * Used in the autocomplete search * @param $query * @return mixed */ public function scopeAllCourse

我正在尝试在我的Laravel5.0项目中实现缓存

我在网上看到的许多缓存示例都不是范围查询,所以我有点困惑。这里有一个来自我的模型的查询/方法,它返回我所有类的
subject\u code
course\u 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');
}

多谢各位

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

因此,在控制器中:

您可以使用Cache add(),但我更喜欢Cache::memory()


哦,你完全正确。这完全有道理。非常感谢。嗨,克里斯。根据docs
从缓存中获取项目,或者存储默认值,我猜这会将项目保存到缓存中,如果存在,是否也从缓存中获取?
$classes = Cache::remember('classes', 60, function() {
    return Class::allCourseNo()->get();
});