【发布时间】:2019-03-28 08:45:09
【问题描述】:
我正在构建一个 Laravel 库存管理应用程序,它允许每个订阅者(用户)在单独的数据库中拥有一个 stock。
所有用户的数据库都具有源自相同 Laravel 迁移的相同设计。
我有一个master_database,其中包含一个stock 表,如下所示:
id database_name
1 stock_1
2 stock_2
-
master_database是默认数据库,其凭据位于 .env 文件中)
用户将能够通过提交包含 3 个字段的表单来登录应用程序:
- database_name
- email
- password
例如,当用户想要连接到stock_1 数据库时,我会执行以下操作:
1 - 我检查stock_1 数据库是否存在于stock 表中(在master_database 中)。
2 - 我通过向此方法提供database_name 动态更改数据库配置来连接到stock_1 数据库:
public static function connect($db)
{
// get default connection
$connections = \Config::get('database.connections');
$newConnection = $connections[\Config::get('database.default')];
$newConnection['database'] = $db;
$newConnection['username'] = 'root';
$newConnection['password'] = 'root';
\Config::set('database.connections.' . $newConnection['database'], $newConnection);
\Config::set('database.default', $newConnection['database']);
}
3 - 如果输入的email 和password 正确,我会检查此数据库中的users 表,然后我登录用户。
所以我的问题是:
这种动态数据库配置会影响整个项目吗?
如果有很多用户试图同时连接到不同的数据库怎么办?这会起作用吗,或者他们都会共享对配置的最后一次修改?
有没有更好的方法来做到这一点,同时将每只股票保存在单独的数据库中?
【问题讨论】: