我正在构建一个不同用户访问不同数据库的应用程序。
在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引发了一个错误:
在......中找不到“会话”类
我试图以多种方式导入Session,并且我找到的每个命名空间都可能是Session的命名空间,但根本没有任何工作,错误仍然存在。
在Session类自动加载之前,似乎laravel5会加载具有所有可能连接的数据库类。
是否有另一种方法可以为不同的用户创建数据库连接?或者有人可以提出另一种方法吗?
答案 0 :(得分:2)
Laravel提供了一个在运行时访问配置的外观。
Config::set('database.default', 'sqlite');
来自Laravel文档:
&#34;在运行时设置的配置值仅为当前请求设置,不会转移到后续请求。&#34;
我认为这是一个更可行的解决方案。您可以调用此函数并为每个请求设置会话数据库。
或者更好的是,使用中间件并在每次请求之前安装它以处理数据库设置。