php - 在 Laravel 中动态创建各种连接

标签 php laravel migration database-connection multiple-databases

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

我尝试过的:

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

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

Any idea why

我遇到的另一个问题是我想在相同的场景下运行迁移和播种。我会在一个数组中有一系列数据库,并且需要对它们中的每一个运行迁移。

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

Laravel: connect to databases dynamically

最佳答案

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

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

描述了这种方法 here

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

关于php - 在 Laravel 中动态创建各种连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45095779/

相关文章:

php - 使用输入表单查看 Laravel 路由

php - fatal error : Class 'MongoDate' not found when using mongodb php driver 1. 1.2 和 PHP 7.0.2 - Laravel 5.1

database - 错误 : Could not open input file: partisan

mysql - 从 MySQL 切换到 Cassandra - 优点/缺点?

php - MySQL从名字和姓氏查询ID

php - MySql - 使用 IF ELSE 进行动态表选择

php - Laravel 迁移 : Foreign key constraint is incorrectly formed

javascript - 下拉选择后,存储选择并使用 mysql 数据库的结果刷新同一页面

php - 带有动态消息的 Laravel 自定义验证规则

php - Laravel 迁移错误