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 抛出了一个错误:

在 中找不到类"会话" ...

我尝试以多种方式导入 Session,并且我发现的每个命名空间可能是 Session 的命名空间,但没有任何效果,错误仍然存在。

似乎 laravel5 会在自动加载会话类之前加载具有所有可能连接的数据库类。

有没有另一种方法可以为不同的用户创建数据库连接?或者有人可以建议另一种方法吗?

>Laravel提供了一个在运行时访问配置的外观。

Config::set('database.default', 'sqlite');

来自Laravel文档:

"在运行时设置的配置值仅为当前请求设置,不会转移到后续请求中。"

我认为这是一个更可行的解决方案。您可以调用此函数并为每个请求设置来自会话的数据库。

或者更好的是,使用中间件并仅在每次请求之前挂载它以处理数据库设置。