Если я бегу 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, все работает нормально, за исключением вывода. Он отображается один раз в конце со всеми действиями.
$this->info('Migrating and seeding the database...');
Artisan::call('migrate:fresh', [
'--seed' => true,
'--force' => true,
]);
$this->line(Artisan::output());
Я ищу метод для отображения Artisan :: output () по одному для каждой таблицы (такое же поведение, как при запуске команды в консоли).
Причина, по которой ваш код работает так, как он работает, заключается в том, что вы выводите выходные данные команды после ее завершения:
$this->line(Artisan::output());
Для того, чтобы отобразить вывод выполненных мигрировать: свежие По мере того, как команда запускается с миграциями, вам нужно сделать так, чтобы она выводилась на выход родительской команды, а не на собственную, которая позже будет прочитана Artisan :: выход ().
Следующий код сделает свое дело:
$this->info('Migrating and seeding the database...');
Artisan::call('migrate:fresh', [
'--seed' => true,
'--force' => true,
], $this->output);
Обратите внимание на третий аргумент, переданный call()
метод.
Других решений пока нет …