У меня есть две функции, которые выглядят почти одинаково и называются справа один за другим как AJAX-запросы из функции JavaScript.Laravel Cache: недопустимые данные
/**
* get all Airports for autocomplete
*/
public function getAirports(){
if(Cache::has('airports')){
return Cache::get('airports');
}
$airportModel = new Airport;
$airports = json_encode($airportModel -> _getForAutocomplete('iata_faa_code'));
Cache::put('airports', $airports, 600);
return $airports;
}
/**
* get all Countries for autocomplete
*/
public function getCountries(){
if(Cache::has('countries')){
return Cache::get('countries');
}
$countryModel = new Country;
$countries = json_encode($countryModel -> _getForAutocomplete('two_letter_code'));
Cache::put('countries', $countries, 600);
return $countries;
}
Теперь, когда я иду на страницу в первый раз, я получаю данные правильно (так как он не кэшируются пока). Если я перейду на страницу во второй раз, я получу страны, но для аэропортов я получаю следующую ошибку и не понимаю, почему.
{"error":{"type":"Illuminate\\Encryption\\DecryptException","message":"Invalid data.","file":"C:\\xampp\\htdocs\\laravel\\vendor\\laravel\\framework\\src\\Illuminate\\Encryption\\Encrypter.php","line":132}}
я обнаружил, что он должен сделать что-то с кешем погуглить и удаление Cache-часть. Я был бы очень рад, если бы кто-то мог помочь мне с этим.
Кстати, я использую базу данных в качестве моего драйвера кеша.
С наилучшими пожеланиями, Марсель
Я не попадаю в блок if. Если я делаю 'dd (Cache :: get ('airport'))' или 'dd (Cache :: has ('airport'))' перед if-блоком, я получаю ту же ошибку – molerat
В этом случае я рекомендую очистите кеш БД вручную и проверьте строку json, записанную в БД, и если она точно такая же и в БД. Может быть, что-то пошло не так в json_encode –
Как я могу сравнить его со строкой в БД? В БД предполагается шифрование – molerat