Я пытаюсь внедрить кэширование в свой Laravel 5 API, но у меня проблемы. Я получаю эту ошибку прямо сейчас:
ОшибкаException в строке MedalController.php 19:
Неопределенное свойство: GuzzleHttp \ Psr7 \ Response :: $ Результаты
Может кто-нибудь понять, почему это не получает мой заголовок? Я никогда раньше не использовал кеширование, поэтому я, вероятно,
Вот как я звоню и получаю свой медаль за каждого игрока в игре Halo 5:
GetDataController:
class GetDataController extends Controller { /** * Fetch a Players Arena Stats * * @param $gamertag * @return mixed */ public function getPlayerArenaStats($gamertag) { $client = new GuzzleHttp\Client(); $baseURL = 'https://www.haloapi.com/stats/h5/servicerecords/arena?players=' . $gamertag; $res = $client->request('GET', $baseURL, [ 'headers' => [ 'Ocp-Apim-Subscription-Key' => env('Ocp-Apim-Subscription-Key') ] ]); Cache::put('stats', $res, 10); if ($res->getStatusCode() == 200) { return $result = json_decode($res->getBody()); } elseif ($res->getStatusCode() == 404) { return $result = redirect()->route('/'); } return $res; } }
Мой MedalControler, который вызывает заголовок и пытается получить все медали для игрока:
class MedalController extends Controller { /** * Get a Players Arena Medals * * @param $playerArenaMedalStats * @return mixed */ public function getArenaMedals($playerArenaMedalStats) { $results = collect($playerArenaMedalStats->Results[0]->Result->ArenaStats->MedalAwards); $array = $results->sortByDesc('Count')->map(function ($item, $key) { return [ 'MedalId' => $item->MedalId, 'Count' => $item->Count, ]; }); return $array; } }
И вот как получить, декодировать и вернуть медали для просмотра:
class StatsController extends Controller { /** * Return all Stats for a particular player * * @param Request $request * @return mixed */ public function index(Request $request) { if (Cache::has('stats')) { $playerArenaMedalStats = Cache::get('stats'); $playerArenaMedalStatsArray = app('App\Http\Controllers\MedalController')->getArenaMedals($playerArenaMedalStats); $arenaMedals = json_decode($playerArenaMedalStatsArray, true); } else { app('App\Http\Controllers\GetData\GetDataController')->getPlayerArenaStats($gamertag); } // More stuff here, shortened for simplicicty return view('player.stats')->with('arenaMedals', $arenaMedals); } }