【问题标题】:Call the same 'migrate' command a lot of times in Artisan Command在 Artisan Command 中多次调用相同的“迁移”命令
【发布时间】:2014-08-22 02:12:56
【问题描述】:

我有一个命令会多次调用“迁移”命令,每个命令都有不同的配置。这是我的代码:

$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')); 
}

由于我在我的应用程序中动态创建了数据库,因此我使用此命令为我的所有数据库运行迁移。因此,首先我获取所有数据库名称,然后对每个数据库名称调用“迁移”命令。但我有一个问题。

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

有人知道发生了什么吗?

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    我发现我需要在循环的每个步骤中重新连接数据库连接。所以,代码将是:

    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')); 
    }
    

    【讨论】:

      猜你喜欢
      • 2018-06-07
      • 2017-09-27
      • 2019-01-28
      • 2019-06-30
      • 2018-12-06
      • 2019-08-30
      • 2021-02-11
      • 1970-01-01
      • 2020-08-16
      相关资源
      最近更新 更多