我有两个函数看起来非常相似,它们被一个JavaScript函数作为AJAX请求依次调用。
/**
* 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}}
通过谷歌搜索和删除缓存部分,我已经发现这与缓存有关。如果有人能够帮助我解决这个问题,我将不胜感激。
顺便说一下,我正在使用数据库作为我的缓存驱动程序。
最好的问候,Marcel
dd(Cache::get('airports'))
或dd(Cache::has('airports'))
,我会得到相同的错误。 - molerat