artisan 一个一个输出

artisan output one by one

如果我 运行 php artisan migrate:fresh --seed --force 在控制台中一切正常。 输出一一显示。

Dropped all tables successfully.

Migration table created successfully.

Migrating: 2014_10_12_000000_create_users_table

Migrated:  2014_10_12_000000_create_users_table

Seeding: UsersTableSeeder

etc.

如果我 运行 来自 Laravel 的 artisan 命令,除输出外一切正常。它在所有操作的最后显示一次。

$this->info('Migrating and seeding the database...');
Artisan::call('migrate:fresh', [
    '--seed'  => true,
    '--force' => true,
]);
$this->line(Artisan::output());

我正在寻找一种方法来为每个 table 一个一个地显示 Artisan::output()(与 运行 在控制台中执行命令相同的行为)。

您的代码之所以如此工作,是因为您在命令完成后显示了命令的输出:

$this->line(Artisan::output());

为了在 运行 迁移过程中显示执行的 migrate:fresh 命令的输出,您需要将其输出到父命令而不是它自己的命令,稍后由 Artisan::output() 读取。

以下代码可以解决问题:

$this->info('Migrating and seeding the database...');
Artisan::call('migrate:fresh', [
  '--seed'  => true,
  '--force' => true,
], $this->output);

注意传递给 call() 方法的第三个参数。