我正在与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]);
现在的问题是,无论我想在哪里调用外部数据库,我都应该这样做。那当然不方便。
有人知道这个“问题”的解决方案吗?
答案 0 :(得分:0)
您可以在启动时循环浏览网站模型并设置配置文件,并使用网站的哈希作为键:
foreach (Website::all() as $website) {
config(['database.connections.'.$website->hash.'.host' => $website->db_host]);
...
}
然后使用网站哈希连接到相关数据库:
DB::connection($hash) ...
无论如何,如果其他数据库位于不同的主机上,这不是管理其他数据库的好方法。您最好使用Web服务技术来进行此类工作。连接到外部数据库可能不安全。