2016-06-08 1 views
1

Я пытаюсь использовать Laravel 5 кэша тэ следующим образом:Laravel кэш ясно параметр по подразделу

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

Так у меня есть структура вроде этого

['testlogin'] => [ 
        'param1' => 'value1', 
        'param2' => 'value2', 
       ] 

Но я могу dlete пункта из кэша с ключевой параметр1 для тестологинга?

Благодарим за помощь!

ответ

1

Вы можете использовать теги кэша, чтобы сделать это.

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'); 

Но обратите внимание, что кешированные теги не поддерживаются при использовании драйверов кеша файлов или баз данных.

+0

Я использовал драйвер кэша файлов, попробую теперь ваш пример с redis, thnx! –

+0

Для тестирования вы можете использовать ** cache ** cache driver, если у вас нет redis или memcache. – TheFallen

2

Try:

Cache::forget('testlogin.param1') 

EDIT

Вы правы - мы не можем использовать точечную нотацию. Таким образом, только одна вещь, которую вы можете сделать, это:

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

Вы не можете использовать точечную нотацию с кешем по умолчанию – GONG

+0

Да, последнее решение сработало для меня! Благодарю. –

-1

Unfortunely и не может сделать это с нуля Laravel 5. *. Это лучше использовать базу данных или если его данные временных и может легко сделать это с Sessions:

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

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

return Session::get('some'); 
+0

Сессия или база данных не являются кешем. – TheFallen

+0

@ TheFallen Я даю ему варианты. Он не может сделать это с кешем в лавале. – GONG

+0

Ofc это можно сделать, проверьте мой ответ. – TheFallen

Смежные вопросы