Laravel 缓存不存储空值

rhy*_*thm 2 caching laravel eloquent laravel-5

我正在使用 Laravel 5.2 并希望缓存 eloquent 结果,但它不会在缓存中存储空结果(= null)。有什么办法吗?

return Cache::remember("cacheKey_{$id}", 120, function () use ($id) {
  return FooModel::where(...)->first();
});
Run Code Online (Sandbox Code Playgroud)

当结果不为空时,缓存工作正常。

aar*_*207 8

Laravel 缓存不允许null在缓存中存储值,但您可以存储false值。

    cache(['key' => null],120)
    var_dump(Cache::has('key')); //prints false
    cache(['key' => false],120)
    var_dump(Cache::has('key')); //prints true
Run Code Online (Sandbox Code Playgroud)

所以我建议你尝试这样的事情:

return Cache::remember("cacheKey_{$id}", 120, function () use ($id) {
  $your_check = FooModel::where(...)->first();
  return is_null($your_check) ? false : $your_check;
});
Run Code Online (Sandbox Code Playgroud)

或者,您可以假设当没有密钥时,它将为空(使用Cache::has()或 进行检查isset()