php - 在 Laravel 5.2 中同时连接到多个数据库

标签 php mysql database laravel

我已经找到了很多方法来更改互联网上 config/database.php 文件的默认连接,但我不想要 Multi-Tenancy 应用程序,我需要同时连接到很多数据库,而且我缺乏使代码正常运行的经验。到目前为止,我已经在我的默认数据库中创建了模型 Controller 和名为 DATABASES 的表,我需要一直在其中连接,我在其中存储应用程序中的配置选项,现在我需要设置这些连接,但我无法做到这一点。

我阅读了所有相关内容on the fly database connectionmultidatases connections ,但我无法弄清楚。

我的逻辑是这样的:

  1. 发送新数据库 I 的配置数据选项到我的(默认)数据库的表数据库中。
  2. 通过复选框启用此数据库。
  3. 显示来 self 的默认数据库和新启用的连接的用户。
  4. 禁用第二个或第三个连接,但始终可以访问我的默认数据库。

我不需要代码,我需要指导,希望有人理解我需要做什么!

最佳答案

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

相关文章:

php - Easyphp 工作,linux 服务器返回对非对象上的成员函数的调用

php - Select2 Ajax不匹配结果

android - 如何编写与 Android 应用程序的 R 模型通信的服务?

mysql - Mongodb 与 MySql 搜索优化

Mysql DML 性能

php - Laravel 干预图像不起作用

php - 按html按钮后如何从mysql数据库中减去?

sql-server - 跨数据库安全

sql - 从不同的另一个 View 创建一个 View 并计算一些字段

mysql - 多作者多本书的关系数据库