我在Laravel 5.3中使用文件缓存。一切正常。在生产几天后,我的 laravel 中有很多错误.log WHERE 被调用了 NULL 值(来自缓存(。为什么会这样?每次我打开页面时,一切正常,没有错误。这可能是因为机器人访问我的页面造成的吗?我不知道我做错了什么...
CacheServiceProvider.php
// insert settings into cache
Cache::add('settings', Settings::with('langs')->get(), env('CACHE_TIMEOUT'));
帮手.php
$value = Cache::get('settings')->where('name', $name)->first()->value;
如果缓存值存在,我尝试使用条件,然后使用它,但将其放在任何地方真的很讨厌。如果价值不存在怎么办?我应该调用数据库查询吗?
在助手中.php我建议您使用:
$settings = Cache::remember('settings', env('CACHE_TIMEOUT'), function() {
return Settings::with('langs')->get();
});
$value = !empty($settings) ? $settings->where('name', $name)->first()->value : null;
删除 CacheServiceProvider 中的内容.php因为此代码将在需要获取数据并缓存数据以供下次使用时触发一次。
希望对您有所帮助!