首页 > 解决方案 > 如何从 laravel 的数据库中全局预加载一些记录?

问题描述

例如,我有一个站点设置或用户权限列表。我想确保只调用一次这些数据(这里是一种单一的逻辑)。

我认为这可以使用将数据加载到中间件中的服务容器并像使用它一样使用它

$permissions = app('permissions'); // Collection

或者

$systemSettings = app('systemSettings');

这可以在单元测试和 Laravel 应用程序的任何其他地方访问。

另一个问题是,这是否会更好地与 redis 一起使用?打开连接的开销更小,访问速度更快,数据很少更改并且几乎是键值

标签: laravelsingletonpersistence

解决方案


您可以在引导功能中定义AppServiceProvider上的单例:

      $this->app->singleton( 'systemSettings', function () {
           return Settings::get();
        } );

然后通过调用使用它:

$systemSettings = app('systemSettings');

推荐阅读