DB::Connection 在 Laravel/Lumen 中通过 Config::set 动态更改数据库名称后未更新?

DB::Connection not updated after dynamically changing db name via Config::set in Laravel/Lumen?

我正在尝试通过以下方式动态连接到数据库:

DB::disconnect('mysql');
Config::set('database.connections.mysql.database', 'db_1');

当我使用 DB::table('table_from_db_1')->... 时,它工作得很好。我从 db_1;

获取数据

但是,当我尝试获取 DB::connection()->getDatabaseName() 时,它仍然是 returns 原始数据库名称,而不是 db_1

问题:

  1. 为什么会这样?
  2. 如何有效地测试我是否真的连接到动态数据库?

对于遇到相同问题的任何人,使用 purge 而不是 disconnect 解决了问题。

DB::purge('mysql'); // purge instead of disconnect
Config::set('database.connections.mysql.database', 'db_1');

最后,在try-catch中使用DB::connection()->getPdo();检查连接是否有效。