根据经过身份验证的用户LARAVEL设置数据库

时间:2018-05-04 14:42:08

标签: php laravel laravel-5

我使用的是Laravel 5.6,我想根据经过身份验证的用户设置默认数据库

例如,当user1DB1设置为默认值时,user2设置数据库为DB2

任何建议或其他方式来制作它?

感谢

2 个答案:

答案 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(...);
 }