从laravel 5中的查询缓存所有记录

时间:2015-09-22 14:40:15

标签: laravel caching

我正在尝试通过以下方法(方法1)将查询的所有记录缓存60分钟

Route::get('categoryList', function() {
   return app\CategoryDetails::remember(60)->get();
});

我按照本教程link(提示5:缓存数据库查询)

但是我收到了这个错误:

  

调用未定义的方法Illuminate\Database\Query\Builder::remember()

我不知道我在这里缺少什么。

BTW,我知道我可以通过以下方法缓存整个记录(方法2):

Route::get('categoryList', function() {    
    $category = Cache::remember('category', 10, function() {
        return \App\CategoryDetails::all();
    });

    return $category;
});

这是完美的。

我很好奇为什么第一种方法不适合我。

2 个答案:

答案 0 :(得分:12)

Laravel 5删除了此功能。您现在必须store the cache yourself

Route::get('categoryList', function () {
    return Cache::remember('category-details', 60, function () {
        return App\CategoryDetails::all();
    });
});

来自the upgrade docs

  

Eloquent不再提供remember方法来缓存查询。您现在负责使用Cache::remember函数手动缓存查询。

答案 1 :(得分:1)

考虑使用名为rememberable

的laravel eloquent查询缓存库

它做得很好。