我是阿卜杜拉(Abdullah(。我想在Laravel 5.6中使用多个数据库连接。但是我想动态更改数据库。对我来说,使用config/database.php中的使用session :: get((方法的最佳方法。
'连接'=> [
'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'(方法更改可更改的数据库。是可能的还是其他方式?
我认为这是不可能的,因为当您更改配置文件中的任何配置并使用 php artisan
中的任何配置时,可以为您提供应用程序。您必须停止运行服务并重新启动它,以便在考虑新配置中进行Laravel。Laravel不会加热重新加载配置。
我的建议是根据需要定义database.php
文件中的许多connection
,当您转换为另一个连接时,可以通过提供给定连接的名称(如This this
$users = DB::connection('connection_name')
->table('users')
->where('name', 'John')->first();
您可以切换连接您需要内部控制器或其他地方
如果要更改特定模型的连接,则可以这样执行
$user = new user();
$user->setConnection('connection_name');