在Laravel中动态创建各种连接

4

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

我的尝试:

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

我的代码在本地环境下能够正常运行,但是当我切换到开发环境后就无法工作了。

有什么想法吗?

另一个问题是我想在同一场景下运行迁移和填充。我会在一个数组中拥有一系列数据库,并需要在每个数据库上运行迁移。

我也尝试过这个解决方案,但它不起作用。在设置之后,当我尝试获取我的数据库连接时,它显示为空。

Laravel: 动态连接数据库


在迁移方面,最有可能的是您的Config::set部分未被调用,因为它是通过artisan完成的。您可以扩展Artisan或通过代码运行迁移。例如> Artisan :: call('migrate',['--path'=>'../plugins/'.$tag.'/migrations','--force'= > true]); - Niek van der Maaden
1个回答

0
关于您的主题问题 - 可以通过在配置中创建新的临时数据库连接,并使用它来连接新数据库来完成:
Config::set("database.connections.$database", $newDBConnectionParams);
$this->connection = DB::connection($database);

这种方法在这里有描述

关于您的代码在本地环境上正常工作但在dev环境上无法工作 - 我怀疑这是因为配置缓存 - 当您尝试更新现有的配置条目时,它不会更新,因为条目值是从缓存中获取的。而且似乎本地和dev环境的配置缓存具有不同的设置。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接