通过子键清除Laravel缓存参数

通过子键清除Laravel缓存参数,laravel,laravel-5,laravel-5.2,Laravel,Laravel 5,Laravel 5.2,我正试图以以下方式使用Laravel 5缓存: public function putUserCacheData($key, $value){ \Cache::put($this->login, [$key => $value], 30); } 所以我有这样的结构 ['testlogin'] => [ 'param1' => 'value1', 'param2' => 'val

我正试图以以下方式使用Laravel 5缓存:

public function putUserCacheData($key, $value){
    \Cache::put($this->login, [$key => $value], 30);
}
所以我有这样的结构

    ['testlogin'] => [
                  'param1' => 'value1',
                  'param2' => 'value2',
                 ]
但我可以使用testlogin的键param1从缓存中删除项

谢谢你的帮助

试试看:

Cache::forget('testlogin.param1')
编辑

你说得对,我们不能用点符号。所以你唯一能做的就是:

$testlogin = Cache::get('testlogin');
unset(testlogin['param1']);
Cache::put('testlogin', $testlogin);

不幸的是,你不能用scratch laravel 5.*做到这一点。最好使用数据库,或者如果它的临时数据u可以轻松地使用会话:

Session::put('some', ['data' => 'value', 'key2' => 'value2']);

Session::forget('some.data');

return Session::get('some');

您可以使用缓存标记来执行此操作

public function putUserCacheData($key, $value){
    \Cache::tags($this->login)->put($key, $value, 30);
}

// Remove all entries
Cache::tags($this->login)->flush();

// Remove only param1
Cache::tags($this->login)->forget('param1');

但请注意,在使用文件或数据库缓存驱动程序时,不支持缓存标记。

您不能将点标记与默认缓存一起使用,否则数据库不是缓存。@TheFallen我给了他变量。“他不能用scratch laravel中的缓存来做这件事。@我知道关于标签的事情,请看他的问题,这不是关于使用标签的。这是关于Laravel4中节函数的替代。在他的问题中说是Laravel5。我使用的是文件缓存驱动程序,现在将用redis、thnx尝试您的示例!如果没有安装redis或memcache,可以使用阵列缓存驱动程序进行测试。