根据laravel 5.3中的登录更改数据库连接?

时间:2017-06-03 13:32:31

标签: php laravel laravel-5.3

目前我正在尝试在Laravel 5.3中创建一个SaaS软件。当前的问题是我无法根据用户登录切换数据库。 我想实现以下工作流程。

1)用户名,密码和数据库名称登录 - 完成 2)需要根据master数据库中提供的数据库名称获取凭据 - 已完成 3)如果数据库名称有效,我需要将整个应用程序连接切换到提供的数据库名称。

我已经创建了一个用于切换数据库的中间件,如下所示

class SetDb
{
/**
 * Handle an incoming request.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  \Closure  $next
 * @return mixed
 */
public function handle($request, Closure $next)
{
    if (Session::has('DB_DATABASE')) {

        Config::set('database.connections.mysql7', array(
            'driver' => 'mysql',
            'host' => env('DB_HOST','127.0.0.1'),
            'port' => env('DB_PORT','3306'),
            'database' => Session::get('DB_DATABASE'),
            'username' => Session::get('DB_USER'),
            'password' => Session::get('DB_PASSWORD'),
            'charset' => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix' => '',
        ));
        DB::reconnect('mysql7');
        dd(DB::reconnect('mysql7'));
    } else {
        Auth::logout();
        Session::flush(); 
        DB::reconnect('mysql');
    }
    return $next($request);
}
}

我希望有人能够完成任务,提前谢谢:)

0 个答案:

没有答案