在Laravel 5.2中同时连接到许多数据库

时间:2016-08-17 15:56:32

标签: php mysql database laravel

我找到了很多方法来改变来自整个互联网的config / database.php文件的默认连接,但是我不想要一个多租户应用程序我需要同时连接到很多数据库而且我缺乏使代码工作的经验。我在我的默认数据库中创建了目前为止模型控制器和表名为DATABASES的表,我需要一直连接,现在我从我的应用程序存储配置选项我需要设置这些连接而我不能这样做。

我阅读了有关此on the fly database connectionmultidatases connections的所有信息,但我无法理解。

我的逻辑是:

  1. 在我的(默认)数据库中的表数据库中发送新数据库I的配置数据选项。
  2. 使用复选框启用此数据库。
  3. 从我的默认数据库和新的ENABLED连接中显示用户。
  4. 禁用第二次或第三次连接,但始终可以访问我的默认数据库。
  5. 我不需要代码我需要指导,希望有人了解我需要做的事情!

1 个答案:

答案 0 :(得分:2)

简介 - 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>