缓存配置表并全局访问它Laravel

时间:2019-10-14 18:30:49

标签: laravel laravel-5 caching configuration

我有一个Configuration模型,其表位于数据库configurations中。

它有3列: id,键和值

我想从该表中缓存所有键/值对,以提高性能并减少数据库事务。

我到目前为止所做的事情: 我创建了一个名为Provider的{​​{1}},下面是ConfigurationsServiceProvider方法的代码:

register()

我也已经在public function register() { $this->app->singleton('configurations', function ($app) { return $app['cache']->remember('configurations', 60, function () { return Configuration::pluck('key', 'value')->toArray(); }); }); } 中注册了提供商。

现在我要实现以下目标:

  • 通过调用方法全局访问这些配置键/值对 例如config/app.php
  • 配置数据应永远为所有用户缓存。仅当用户在数据库表中插入/更新任何键/值记录时才应重新缓存
  • 并不重要,但是如果我能以某种方式通过Laravel框架的全局configurations('key')方法合并并访问configurations数据,那将非常棒。

还请提出除config之外,还有没有其他更好的方法可以从用户界面存储动态配置数据供应用程序使用。

1 个答案:

答案 0 :(得分:0)

在这种情况下,我要做的是通过composer加载的辅助函数

让我们说app/Helpers.php

<?php

function configurations($key)
{
    return \Cache::rememberForever("config-$key", function () use ($key) {
        return Configuration::where('key', $key)->first()->value;
    });
}

并自动将其加载到composer.json

"autoload": {
    "files": [
        "app/Helpers.php"
    ]
},

但是当键值更改时,您仍然必须手动清除缓存

希望这会有所帮助