我已经找到了很多方法来更改互联网上 config/database.php 文件的默认连接,但我不想要 Multi-Tenancy 应用程序,我需要同时连接到很多数据库,而且我缺乏使代码正常运行的经验。到目前为止,我已经在我的默认数据库中创建了模型 Controller 和名为 DATABASES 的表,我需要一直在其中连接,我在其中存储应用程序中的配置选项,现在我需要设置这些连接,但我无法做到这一点。
我阅读了所有相关内容on the fly database connection和 multidatases connections ,但我无法弄清楚。
我的逻辑是这样的:
- 发送新数据库 I 的配置数据选项到我的(默认)数据库的表数据库中。
- 通过复选框启用此数据库。
- 显示来 self 的默认数据库和新启用的连接的用户。
- 禁用第二个或第三个连接,但始终可以访问我的默认数据库。
我不需要代码,我需要指导,希望有人理解我需要做什么!
最佳答案
简介 - 2 个连接
假设您需要 2 个连接:默认和自定义,您可以像往常一样在 config/database.php
中提供它们的配置,那么你需要:
>>> 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
如果您想为 Eloquent 模型使用自定义连接,您可以使用 SomeModel::on('on_the_fly')->find($id)
(获取模型实例将使用该连接进行所有后续操作)
关于php - 在 Laravel 5.2 中同时连接到多个数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39001288/