Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php laravel 5使用会话中的参数设置数据库_Php_Database_Session_Laravel 5 - Fatal编程技术网

Php laravel 5使用会话中的参数设置数据库

Php laravel 5使用会话中的参数设置数据库,php,database,session,laravel-5,Php,Database,Session,Laravel 5,我正在构建一个应用程序,不同的用户访问不同的数据库 在laravel 4中,定义数据库连接非常简单,如下所示: 'usertable' => [ 'driver' => 'mysql', 'host' => env('DB_HOST'), 'database' => Session::get('table'), << works for laravel 4 'userna

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

在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,
    ],
“用户表”=>[
“驱动程序”=>“mysql”,
'host'=>env('DB_host'),
'database'=>Session::get('table'),env('DB_USERNAME'),
'password'=>env('DB_password'),
“字符集”=>“utf8”,
“排序规则”=>“utf8\U unicode\U ci”,
'前缀'=>'',
“严格”=>错误,
],
但是,laravel 5抛出一个错误:

在…中找不到类“会话”

我曾尝试以多种方式导入会话,并使用我找到的每个名称空间导入会话,这些名称空间可能是会话的名称空间,但没有任何效果,错误仍然存在

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


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

Laravel提供了一个在运行时访问配置的门面

Config::set('database.default', 'sqlite');
从Laravel文档:

在运行时设置的配置值仅为当前请求设置,不会传递到后续请求

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


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

不起作用,配置在数据库文件中不可访问,您需要在控制器中执行此操作。如果我理解正确,您需要根据每个用户的凭据将其连接到不同的数据库?是的,这就是我要做的,我只需要在连接中指定数据库。我现在只能想到一种方法,并在我的回答中对此进行了解释。如果您在运行时需要动态数据库访问,那么我认为您需要访问配置外观