我找到了很多方法来改变来自整个互联网的config / database.php文件的默认连接,但是我不想要一个多租户应用程序我需要同时连接到很多数据库而且我缺乏使代码工作的经验。我在我的默认数据库中创建了目前为止模型控制器和表名为DATABASES的表,我需要一直连接,现在我从我的应用程序存储配置选项我需要设置这些连接而我不能这样做。
我阅读了有关此on the fly database connection和multidatases connections的所有信息,但我无法理解。
我的逻辑是:
我不需要代码我需要指导,希望有人了解我需要做的事情!
答案 0 :(得分:2)
假设您需要2个连接:默认和自定义,您通常会在config/database.php
中提供其配置,然后您需要:< / p>
>>> DB::connection()->getDatabaseName()
=> "default"
>>> DB::connection('custom')->getDatabaseName()
=> "customized"
// change the config...
>>> config(['database.connections.custom.database' => 'new_customized_db'])
=> null
// ...but once the connection is already open, config change doesn't affect it...
>>> DB::connection('custom')->getDatabaseName()
=> "customized"
// ...so we need to get rid of existing connection completely (reconnect() won't work)
>>> DB::purge('custom')
=> null
>>> DB::connection('custom')->getDatabaseName()
=> "new_customized_db"
上面你可以看到需要做什么。在您的情况下,您只需为您需要的每个新连接添加整个连接配置,它将按预期工作:
>>> config(['database.connections.on_the_fly' => [
>>> 'database' => 'provided_on_the_fly',
>>> ...
>>> ]])
=> null
>>> DB::connection('on_the_fly')->getDatabaseName()
=> "provided_on_the_fly"
如果您想为 Eloquent模型使用自定义连接,可以使用SomeModel::on('on_the_fly')->find($id)
(获取的模型实例将使用该连接进行所有后续操作)< / p>