我是阿卜杜拉。我想在laravel 5.6中使用多个数据库连接。但我想动态更改数据库。对我最好的方法是在config / database.php中使用Session :: get()方法。
'connections'=> [
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'default_db'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
'mysql2' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => 'changeable_db',
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
],
我想通过使用Session :: get('db')方法更改可变数据库。有可能还是其他方式?
答案 0 :(得分:0)
我认为这是不可能的,因为当您更改配置文件中的任何配置并使用php artisan
为您的应用程序提供服务时。您必须停止正在运行的服务并重新启动它,以便laravel考虑新配置。 Laravel不会热重载配置。
我的建议是根据需要在connection
文件中定义许多database.php
,当您想切换到另一个连接时,可以通过提供给定连接的名称来指定它,例如>
$users = DB::connection('connection_name')
->table('users')
->where('name', 'John')->first();
您可以在Controller内部或其他地方切换所需的连接
如果要更改特定型号上的连接,可以通过这种方式执行
$user = new user();
$user->setConnection('connection_name');