Laravel DB 连接在更改配置后未刷新

Abh*_*yan 3 php mysql database laravel laravel-5

这是我指定的数据库连接。

'mysql_test' => [
          'driver' => 'mysql',
          'host' => env('DB_HOST', '127.0.0.1'),
          'port' => env('DB_PORT', '3306'),
          'database'=> '',
          'username' => env('DB_USERNAME', 'forge'),
          'password' => env('DB_PASSWORD', ''),
          'unix_socket' => env('DB_SOCKET', ''),
          'charset' => 'utf8mb4',
          'collation' => 'utf8mb4_unicode_ci',
          'prefix' => '',
          'prefix_indexes' => true,
          'strict' => true,
          'engine' => null,
      ],

Run Code Online (Sandbox Code Playgroud)

现在我尝试更改database代码中的值,然后像这样连接到数据库

 for( $i = 1; $i <=4 ; $i++)
    {
      $db='test_'.$i;
    DB::connection('mysql_test')->statement('CREATE DATABASE '.$db.';' );

   Config::set('database.connections.mysql_test.database' , $db);
    error_log(config('database.connections.mysql_test.database'));
    DB::reconnect('mysql_test');
    error_log(DB::connection('mysql_test')->getDatabaseName());

  }

Run Code Online (Sandbox Code Playgroud)

config与第一个一样,值正在发生变化error_log,我正在获取更改后的config值。但是,当我使用更新后的配置再次连接回同一连接时,我没有获取数据库名称。连接未与任何数据库关联。

lag*_*box 6

您可以尝试purge连接,以便它断开连接并将其从数据库管理器上的缓存中删除:

...

Config::set('database.connections.mysql_test.database', $db);

DB::purge('mysql_test');

dump(DB::connection('mysql_test')->getDatabaseName());
Run Code Online (Sandbox Code Playgroud)