Laravel为整个项目设置动态配置变量

时间:2019-02-01 20:05:30

标签: php laravel frameworks

我正在与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]);

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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

DB::connection($hash) ...

无论如何,如果其他数据库位于不同的主机上,这不是管理其他数据库的好方法。您最好使用Web服务技术来进行此类工作。连接到外部数据库可能不安全。