在Laravel中动态创建各种连接

时间:2017-07-14 06:06:11

标签: php laravel migration database-connection multiple-databases

您好我一直在互联网上搜索有关使用多个数据库连接的问题,并找到了允许我首先在database.php中创建连接的解决方案,然后我可以在需要时切换它们。现在问题是我不知道运行时的数据库名称。我有一个允许用户登录的主数据库,然后数据库将根据用户登录确定要切换的数据库。

我尝试了什么:

Config::set('database.connections.mysql.database', Config::get('database.connections.mysql.database') . '_business_' . $preUser->business_id);

这是我之前所做的,我的代码正在处理本地环境但是当我切换到我的开发环境时它停止了工作。

  

知道为什么

我得到的另一个问题是我想用同样的方案运行迁移和播种。我会在一个数组中有一系列数据库,并且需要在每个数据库上运行迁移。

我也试过这个解决方案,但它不能以某种方式工作。当我在设置数据库连接后尝试获取数据库连接时显示null

Laravel: connect to databases dynamically

1 个答案:

答案 0 :(得分:0)

关于您的主题问题 - 可以通过在配置中创建 new 临时数据库连接并使用它来连接新数据库来完成:

Config::set("database.connections.$database", $newDBConnectionParams);
$this->connection = DB::connection($database);

这种方法描述为here

至于你的代码在本地环境中工作但不在dev上运行 - 我怀疑这是因为配置缓存 - 当你尝试更新现有的配置条目时,它不会更新,因为条目值来自缓存。而且似乎配置缓存在本地和开发环境中有不同的设置。