laravel - 如何从 laravel 的数据库中全局预加载一些记录?
问题描述
例如,我有一个站点设置或用户权限列表。我想确保只调用一次这些数据(这里是一种单一的逻辑)。
我认为这可以使用将数据加载到中间件中的服务容器并像使用它一样使用它
$permissions = app('permissions'); // Collection
或者
$systemSettings = app('systemSettings');
这可以在单元测试和 Laravel 应用程序的任何其他地方访问。
另一个问题是,这是否会更好地与 redis 一起使用?打开连接的开销更小,访问速度更快,数据很少更改并且几乎是键值
解决方案
您可以在引导功能中定义AppServiceProvider上的单例:
$this->app->singleton( 'systemSettings', function () {
return Settings::get();
} );
然后通过调用使用它:
$systemSettings = app('systemSettings');
推荐阅读
- cordova - 无法安装cordova-plugin-wkwebview-engine
- python - 检查 DataFrame 列是否仅包含字符串
- java - 使用 Firebase RecyclerAdapter 时如何获取单击的列表项的位置
- javascript - if 语句的问题,用于石头剪刀布程序
- containers - Microsoft 认知服务语音容器 - API 密钥
- python - pycrypto用公钥加密私钥然后解密会导致垃圾
- swift - 注册 Gigya Swift SDK 代码验证电子邮件未发送
- python - 在 Python 中读取非结构化文本文件以使其结构化
- c# - 如何在 C# 中获取屏幕尺寸(xamarin 跨平台应用程序)
- reactjs - 全屏时我的桌子在移动。有人知道为什么吗?