2016-12-20 1 views
1

Я создал класс утилиты, который я использую для извлечения данных из api и хранилища в кеше с помощью метода Cache::put(). Код для хранения данных в кеше показан ниже.Кэш Laravel при использовании memcached не возвращает те же данные при доступе к контроллеру против модели

protected static function cacheData(array $data) 
{ 
    foreach ($data as $id => $value) 
    { 
     Cache::put('ADWORDS_DATA_' . $id, $value, 60 * 6); 
    } 
} 

Эти данные могут быть получены с помощью Cache::get() в лудильщика. Но когда я пытаюсь получить данные из кеша в методе контроллера, подобном этому,

$campaigns = Auth::user()->campaigns()->with(['adwords', 'facebookAds'])->get(); 

$data = []; 
foreach ($campaigns as $campaign) 
{ 
     $data[] = Cache::get('ADWORDS_DATA_' . $campaign->adwords->account_number); 
} 

запрос возвращает null. Я уже изменил среду своего приложения на этап локализации, чтобы сохранить кеш от каждого запроса, но я не могу понять, почему данные, хранящиеся в кеше, доступны с помощью методов модели и инструментов, но не через контроллер.

Любая помощь была бы принята с благодарностью.

+0

Я просто попробовал это для вас, используя несколько разных типов драйверов. Я пробовал его с помощью 'file',' array', 'redis' и' memcached'. Единственное, что я мог воспроизвести, это «массив». Остальные, казалось, работали правильно. Возможно, это имеет какое-то отношение к разрешениям, или кто является исполняемым владельцем. – Ohgodwhy

ответ

0

Оказывается, я просто немного тупой. Я забыл, что кеш не сохраняется в тестовой среде, поэтому при доступе к маршруту через тест я не получал результаты от кеша, который я ожидал.