Php laravel 5使用会话中的参数设置数据库
我正在构建一个应用程序,不同的用户访问不同的数据库 在laravel 4中,定义数据库连接非常简单,如下所示: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
'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文档:
在运行时设置的配置值仅为当前请求设置,不会传递到后续请求
我认为这是一个更可行的解决办法。您可以调用此函数并为每个请求从会话设置数据库
或者更好的方法是,使用中间件,在每次请求之前安装它来处理数据库设置。不起作用,配置在数据库文件中不可访问,您需要在控制器中执行此操作。如果我理解正确,您需要根据每个用户的凭据将其连接到不同的数据库?是的,这就是我要做的,我只需要在连接中指定数据库。我现在只能想到一种方法,并在我的回答中对此进行了解释。如果您在运行时需要动态数据库访问,那么我认为您需要访问配置外观