Если речь идёт о частном случае данной команды - то ответ довольно прост и легко ищется в исходных текстах.
Вот как проверяется возможность запуска команды миграции, как видно - здесь используется метод
canExecute()
,
посмотрев в который можно заметить что он контролируется флагом
--no-interaction
. Более того, банально вызвав help по этой команде можно было бы увидеть ответ на свой вопрос написанный прямым текстом:
Or you can also execute the migration without a warning message which you need to interact with:
bin/console doctrine:migrations:migrate --no-interaction
Если же речь идёт об общем подходе к тому как запускать консольные команды которые требуют пользовательского ввода - то здесь ответ довольно
находится в документации Symfony. Если посмотреть в исходные тексты
ConsoleTester
о котором говорится в этом разделе, то
видно что основная идея - использование специального input'а. Таким образом решение становится довольно простым:
- Получаем и клонируем
Kernel
- Создаём новый консольный
Application
- Создаём и конфигурируем
ArrayInput
- Запускаем приложение с нужным нам input'ом
Весь основной код для этого можно, очевидным образом, подсмотреть в
bin/console
самой Symfony.