首页 > 解决方案 > Laravel 为整个项目设置动态配置变量

问题描述

我正在使用 Laravel 开发 CMS 来管理其他数据库。现在我使用 config 函数来创建一个临时配置变量。我为外部数据库执行此操作,它也可以工作。

这就是我的代码现在的样子:

$website = Website::where('hash', '=', $hash)->first();

config(['database.connections.extern.host' => $website->db_host]);
config(['database.connections.extern.database' => $website->db_name]);
config(['database.connections.extern.username' => $website->db_username]);
config(['database.connections.extern.password' => $website->db_password]);

现在的问题是,无论我想在哪里调用外部数据库,我都应该这样做。这当然不方便。

有谁知道这个“问题”的解决方案?

标签: phplaravelframeworks

解决方案


您可以循环浏览网站模型并在启动时设置配置文件,并使用网站的哈希作为键:

foreach (Website::all() as $website) {
    config(['database.connections.'.$website->hash.'.host' => $website->db_host]);
    ...
}

然后使用网站哈希连接到相关数据库:

DB::connection($hash) ...

无论如何,如果它们位于不同的主机上,这不是管理其他数据库的好方法。你最好使用网络服务技术来做这样的工作。连接到外部数据库可能不安全。


推荐阅读