【问题标题】:How can I use remember() method in Laravel to cache the query using query builder?如何使用 Laravel 中的 remember() 方法使用查询构建器缓存查询?
【发布时间】:2016-11-09 05:40:58
【问题描述】:

我有一个使用 Laravel 5.2 编写的应用程序。

在许多情况下,我使用查询生成器来构建查询

DB::connection('custom')->table('user')
->join
.....
->where(
........->get();

如何使用方法remember() 缓存查询生成器生成的查询?

我尝试在 get() 之前使用 ->remember(60) 但这给了我一个错误

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

【问题讨论】:

    标签: php laravel laravel-5


    【解决方案1】:

    你应该这样做

     $value = Cache::remember('users', 60, function()
      {
         return DB::table('users')->get();
     });
    

    【讨论】:

    • 我认为“用户”是缓存的关键,对吧?如果是这样,那对于相同检索的查询是否应该是唯一的?
    • it deppends, change the users before , 60 ... 附加一个 id 或 time 或任何适合你的情况
    • 因为我是从查询生成器生成的。没有办法使用绑定值作为键的实际查询吗? toSql 方法不包含绑定值
    • @Jaylen 对不同的查询使用不同的键。也许“users.all-users”用于检索所有用户的查询,“users.verified-users”用于检索经过验证的用户。如果数据在某种程度上是唯一的或仅限于特定查询的一个用户,您只需要附加一个 id。不要为此目的使用时间,除非您通过其他方法存储用于密钥的时间,否则您将无法检索缓存。
    猜你喜欢
    • 2022-01-14
    • 2017-04-13
    • 2021-06-05
    • 2017-06-29
    • 2018-07-03
    • 2013-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多