您好,我一直在 Internet 上搜索有关使用多个数据库连接的信息,并找到了允许我首先在 database.php 中创建连接的解决方案,然后我可以在需要时切换它们。现在的问题是我不知道运行时的数据库名称。我有一个用于让用户登录的主数据库,然后该数据库将根据用户登录确定切换哪个数据库。
我尝试过的:
Config::set('database.connections.mysql.database', Config::get('database.connections.mysql.database') . '_business_' . $preUser->business_id);
这是我之前所做的,我的代码在本地环境中工作,但是当我切换到我的开发环境时它停止工作了。
Any idea why
我遇到的另一个问题是我想在相同的场景下运行迁移和播种。我会在一个数组中有一系列数据库,并且需要对它们中的每一个运行迁移。
我也试过这个解决方案,但不知何故不起作用。当我在设置后尝试获取我的数据库连接时它显示为 null
最佳答案
关于您的主题问题 - 可以通过在配置中创建新临时数据库连接并使用它来连接新数据库来完成:
Config::set("database.connections.$database", $newDBConnectionParams);
$this->connection = DB::connection($database);
描述了这种方法 here
至于您的代码在本地环境中工作但不在开发环境中工作 - 我怀疑这是因为配置缓存 - 当您尝试更新现有配置条目时,它不会更新,因为条目值是从缓存中获取的。而且配置缓存似乎在本地和开发环境中有不同的设置。
关于php - 在 Laravel 中动态创建各种连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45095779/