工匠一个一个地输出

时间:2017-10-28 16:00:58

标签: php laravel laravel-5 console artisan

如果我在控制台中运行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());

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

1 个答案:

答案 0 :(得分:1)

您的代码按原样运行的原因是,一旦完成,您就会显示命令的输出:

$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()方法的第三个参数。