Esta es mi conexión de base de datos que he especificado.
'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, ], Ahora estoy tratando de cambiar el valor de la database de datos del código y luego la conexión a la base de datos de esta manera
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()); } el valor de config se cambia como en el primer error_log , obtengo mi valor de config modificado. Pero cuando me vuelvo a conectar a la misma conexión con la configuración actualizada, no obtengo el nombre de mi base de datos. La conexión no se asocia a ninguna base de datos.
Puede intentar purge la conexión para que se desconecte y la elimine de la memoria caché en el Administrador de base de datos:
... Config::set('database.connections.mysql_test.database', $db); DB::purge('mysql_test'); dump(DB::connection('mysql_test')->getDatabaseName());Debe volver a conectar la base de datos después de cambiar el valor de configuración
DB::reconnect("mysql_test");
DB::Purge() me lo arregló. Parece que esto era necesario después de la actualización de Laravel 8.x. Antes, las tareas de Laravel cambiaban las conexiones de la base de datos cuando era necesario. Después de alguna actualización, ya no lo hicieron.