laravel 5 使用会话中的参数设置数据库
laravel 5 set Database with parameters from Session
我正在构建一个应用程序,让不同的用户访问不同的数据库。
在 laravel 4 中,就像定义数据库连接一样简单:
'usertable' => [
'driver' => 'mysql',
'host' => env('DB_HOST'),
'database' => Session::get('table'), << works for laravel 4
'username' => env('DB_USERNAME'),
'password' => env('DB_PASSWORD'),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
],
但是,laravel 5 抛出错误:
Class 'Session' not found in ...
我尝试以多种方式导入 Session,并尝试使用我发现的每个可能是 Session 的命名空间的命名空间,但没有任何效果,错误仍然存在。
似乎 laravel5 会在自动加载会话 class 之前用所有可能的连接加载数据库 class。
有没有其他方法可以为不同的用户创建数据库连接?或者有人可以建议另一种方法吗?
Laravel 提供在运行时访问配置的外观。
Config::set('database.default', 'sqlite');
来自 Laravel 文档:
"Configuration values that are set at run-time are only set for the current request, and will not be carried over to subsequent requests."
我认为这是一个更可行的解决方案。您可以调用此函数并为每个请求从会话设置数据库。
或者更好的是,使用中间件并在每次请求之前挂载它来处理数据库设置。
我正在构建一个应用程序,让不同的用户访问不同的数据库。
在 laravel 4 中,就像定义数据库连接一样简单:
'usertable' => [
'driver' => 'mysql',
'host' => env('DB_HOST'),
'database' => Session::get('table'), << works for laravel 4
'username' => env('DB_USERNAME'),
'password' => env('DB_PASSWORD'),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
],
但是,laravel 5 抛出错误:
Class 'Session' not found in ...
我尝试以多种方式导入 Session,并尝试使用我发现的每个可能是 Session 的命名空间的命名空间,但没有任何效果,错误仍然存在。
似乎 laravel5 会在自动加载会话 class 之前用所有可能的连接加载数据库 class。
有没有其他方法可以为不同的用户创建数据库连接?或者有人可以建议另一种方法吗?
Laravel 提供在运行时访问配置的外观。
Config::set('database.default', 'sqlite');
来自 Laravel 文档:
"Configuration values that are set at run-time are only set for the current request, and will not be carried over to subsequent requests."
我认为这是一个更可行的解决方案。您可以调用此函数并为每个请求从会话设置数据库。
或者更好的是,使用中间件并在每次请求之前挂载它来处理数据库设置。