我使用的是Laravel 5.6,我想根据经过身份验证的用户设置默认数据库
例如,当user1
将DB1
设置为默认值时,user2
设置数据库为DB2
任何建议或其他方式来制作它?
感谢
答案 0 :(得分:2)
首先,您可以根据您的用户使用相关值更新连接配置详细信息(我假设此处默认连接名称为mysql
):
// This will overwrite only the values you need updated so you don't have
// to add all of the configuration keys like 'driver', 'charset', etc
config()->set('database.connections.mysql', array_merge(config('database.connections.mysql'), [
'database' => 'new_database',
'username' => 'new_username',
'password' => 'new_password',
]));
然后您只需重新连接到数据库,它将使用新配置:
\DB::reconnect('mysql');
所有这些代码可能最好放在中间件中,因此它会在每个请求上自动运行。
答案 1 :(得分:1)
使用Illuminate \ Support \ Facades \ Auth;
你可以做到
if(Auth::user()->type == 1){
$users = DB::connection('DB1 ')->select(...);
}else{
$users = DB::connection('user2 ')->select(...);
}