如何从 laravel 中的数据库全局预加载一些记录?
How to preload globally some records from database in laravel?
例如,我有一个站点设置或用户权限列表。我想确保只调用一次这些数据(这里是一种单例逻辑)。
我认为这可以使用服务容器将数据加载到中间件中并像这样使用它
$permissions = app('permissions'); // Collection
或
$systemSettings = app('systemSettings');
可以在单元测试和 Laravel 应用程序的任何其他地方访问。
另外一个问题是,这是否可以更好地与 Redis 一起使用?打开连接的开销更小,访问速度更快,数据很少更改并且几乎是键值
您可以在 AppServiceProvider 的 boot 函数中定义单例:
$this->app->singleton( 'systemSettings', function () {
return Settings::get();
} );
然后通过调用使用它:
$systemSettings = app('systemSettings');
例如,我有一个站点设置或用户权限列表。我想确保只调用一次这些数据(这里是一种单例逻辑)。
我认为这可以使用服务容器将数据加载到中间件中并像这样使用它
$permissions = app('permissions'); // Collection
或
$systemSettings = app('systemSettings');
可以在单元测试和 Laravel 应用程序的任何其他地方访问。
另外一个问题是,这是否可以更好地与 Redis 一起使用?打开连接的开销更小,访问速度更快,数据很少更改并且几乎是键值
您可以在 AppServiceProvider 的 boot 函数中定义单例:
$this->app->singleton( 'systemSettings', function () {
return Settings::get();
} );
然后通过调用使用它:
$systemSettings = app('systemSettings');