首页 / 缓存 / php-在laravel中全局缓存表值
php-在laravel中全局缓存表值
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php-在laravel中全局缓存表值,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1636字,纯文字阅读大概需要3分钟。
内容图文
我有一张桌子:带有型号的设置
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()
{
}
}
在将名称和值添加到表设置之后,我在这样的视图中调用它:
{{ config('settings.sitename') }}
其中sitename是可以完美返回值的名称字段.
问题:
这种方法的问题在于,每个页面请求都会发出一个DB调用.由于这些设置并不经常更改,因此我一直在寻找一种将其缓存在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') }}
没有任何回报.
解决方法:
我没有足够的声誉来发表评论,但这应该可以解决
更换:
return $settings->pluck('name', 'value')->all();
带有:
return $settings->pluck('value', 'name')->all();
然后用通常的方法:
php artisan config:clear
php artisan cache:clear
内容总结
以上是互联网集市为您收集整理的php-在laravel中全局缓存表值全部内容,希望文章能够帮你解决php-在laravel中全局缓存表值所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。