Laravel 7 - 如何在登录时更改数据库?
Posted
技术标签:
【中文标题】Laravel 7 - 如何在登录时更改数据库?【英文标题】:Laravel 7 - How can I change database at login? 【发布时间】:2020-10-05 20:20:55 【问题描述】:我的 laravel 7 项目中有几个数据库。 我有一个“主”数据库,我将用户与另一个辅助数据库相关联。 因此,主数据库始终相同,但辅助数据库不同,具体取决于用户。用户登录时如何选择数据库?
【问题讨论】:
【参考方案1】:您可以使用以下方式更改数据库。
config()->set('database.default', 'user-1-db');
PS:以上将仅更改单个请求的数据库连接。因此,要根据用户来实现它,您可以通过创建中间件来实现。了解中间件here。
【讨论】:
【参考方案2】:您可以在config/database.php
上定义多个数据库连接
并且当用户登录时,根据用户信息更改此变量的配置值。
假设您添加了一个名为tenant_db
的新数据库连接,并且用户的目标数据库名称是“tenant_user_db_1”,用户名是“tenant_user_1”,密码是“tenant_user_1_password”
然后您可以使用此更改数据库连接
$connection = "tenant_db";
$dbname = "tenant_user_db_1";
$username = "tenant_user_1";
$password = "tenant_user_1_password";
config(['database.connections.'.$connection.'.database' => $database]);
config(['database.connections.'.$connection.'.username' => $username]);
config(['database.connections.'.$connection.'.password' => $password]);
DB::reconnect($connection);
【讨论】:
我是在 LoginController 中完成的,但后来我得到一个 SQLSTATE [3D000]: Invalid catalog name: 1046 No database selected以上是关于Laravel 7 - 如何在登录时更改数据库?的主要内容,如果未能解决你的问题,请参考以下文章