调用相同的'migrate'在工匠命令中多次命令


Call the same 'migrate' command a lot of times in Artisan Command

我有一个命令,它会多次调用'migrate'命令,每个命令都有不同的配置。这是我的代码:

$pdo = new PDO("mysql:host=$host", $root, $root_password);
$databases = $pdo->query('SHOW DATABASES')->fetchAll();
foreach($databases as $db){
  $dbName = $db['Database'];
  Config::set('database.connections.my_database.database', $dbName);
  $this->call('migrate', array('--env' => 'local', '--database' => 'my_database')); 
}

因为我在我的应用程序中动态创建了数据库,所以我使用这个命令来运行所有数据库的迁移。因此,首先我获取所有数据库名称,并对每个名称调用'migrate'命令。但是我有一个问题。

Artisan只运行到第一个$dbName的迁移。即使我正确地将$dbName打印到循环的每一步,其他步骤也会显示"Nothing to migrate"。如果我尝试在终端中为其他数据库运行该命令,它会运行得很好。好像是缓存,我不知道。

有人知道发生了什么事吗?

我发现我需要在循环的每一步中重新连接DB连接。因此,代码将是:

foreach($databases as $db){
  $dbName = $db['Database'];
  Config::set('database.connections.my_database.database', $dbName);
  DB::reconnect('my_database');
  $this->call('migrate', array('--env' => 'local', '--database' => 'my_database')); 
}