如果我在控制台中运行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()(与在控制台中运行命令的行为相同)。
答案 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()
方法的第三个参数。