目前我正在尝试在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);
}
}
我希望有人能够完成任务,提前谢谢:)