我有一张表:模型的设置Setting
class Setting extends Model
{
protected $fillable = [
'name', 'value',
];
}
我创建了一个服务提供SettingsServiceProvider
并注册于app.php
class SettingsServiceProvider extends ServiceProvider
{
/**
* Bootstrap the application services.
*
* @return void
*/
public function boot(Factory $cache, Setting $settings)
{
if (\Schema::hasTable('settings')) {
config()->set('settings', Setting::pluck('value', 'name')->all());
}
}
/**
* Register the application services.
*
* @return void
*/
public function register()
{
}
}
添加后name
and value
到餐桌上settings
,我在视图中这样称呼它:
{{ config('settings.sitename') }}
Where sitename
is the name
完美返回值的字段。
Problem:此方法的问题在于每个页面请求都会进行数据库调用。由于这些设置并不意味着经常更改,所以我正在寻找一种将其缓存在 laravel 缓存中的方法。
我尝试了以下方法:
class SettingsServiceProvider extends ServiceProvider
{
/**
* Bootstrap the application services.
*
* @return void
*/
public function boot(Factory $cache, Setting $settings)
{
$settings = $cache->remember('settings', 60, function() use ($settings)
{
return $settings->pluck('name', 'value')->all();
});
config()->set('settings', $settings);
/* if (\Schema::hasTable('settings')) {
config()->set('settings', Setting::pluck('value', 'name')->all());
} */
}
/**
* Register the application services.
*
* @return void
*/
public function register()
{
//
}
}
但是当我尝试将其返回到这样的视图时:
{{ config('settings.sitename') }}
没有任何回报。