首页 文章

laravel 5使用Session中的参数设置数据库

提问于
浏览
0

我正在构建一个应用程序,其中不同的用户访问不同的数据库 .

在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似乎会加载具有所有可能连接的数据库类 .

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

1 回答

  • 2

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

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

    来自Laravel文档:

    “在运行时设置的配置值仅为当前请求设置,不会转移到后续请求 . ”

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

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

相关问题