如何从 laravel 中的数据库全局预加载一些记录?

How to preload globally some records from database in laravel?

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

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

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

$systemSettings = app('systemSettings');

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

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

您可以在 A​​ppServiceProviderboot 函数中定义单例:

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

然后通过调用使用它:

$systemSettings = app('systemSettings');