如何删除缓存中的密钥? (laravel 5.3)

时间:2017-01-14 11:43:36

标签: php laravel caching laravel-5.3

如果我跑:

echo '<pre>';print_r(Cache('test'));echo '</pre>';die();

结果如下:

Array
(
    [0] => Array
        (
            [id] => 42
            [name] => real madrid
            [description] => ronaldo
        )

    [1] => Array
        (
            [id] => 41
            [name] => chelsea
            [description] => hazard
        )

)

我想删除包含id = 42。

的密钥

我试着这样:

$id = 42;
foreach (Cache('test') as $key => $value) {
      if($key['id'] == $id) {
           Cache::forget($key);
      }
}

然后,我跑:

dd(Cache('test'));

但是id = 42的密钥仍在那里。

1 个答案:

答案 0 :(得分:2)

缓存中的条目称为test,它是一个包含多个元素的数组;因此,尝试从id为42的缓存中删除条目将不起作用,因为条目42不是缓存条目,只是数组的一部分。

$ttl = 240;

$id = 42;
// retrieve the array from Cache
$value = Cache::get('test');
// Identify the entry with id of 42
$entry = array_flip(array_column($value, 'id'));
// delete that entry from the array
unset($value[$entry[$id]]);
// restore the modified array to cache
Cache::put('test', $value, $ttl)