Команда Symfony --no-взаимодействия не работает - PullRequest
0 голосов
/ 31 августа 2018

У меня есть установка с двумя разными подключениями к базе данных, что также означает двух разных менеджеров сущностей. Я пытаюсь создать команду CLI Symfony, которая вызывает команду doctrine:migrations:migrate с параметрами --em, --configuration и --no-interaction. Однако я борюсь с тем фактом, что, несмотря на наличие --no-interaction и $input->setInteractive(false), мне все равно предлагается подтверждение.

Посмотрите на код:

protected function execute(InputInterface $input, OutputInterface $output) {
    $input->setInteractive(false);

    // some other code here

    $command = $this->getApplication()->find('doctrine:migrations:migrate');
    $arguments = array(
        'command' => 'doctrine:migrations:migrate',
        'version' => $version,
        '--em' => $em,
        '--configuration' => self::CONFIG_FILES[$em],
        '--no-interaction' => true
    );

    $migrationInput = new ArrayInput($arguments);
    $command->run($migrationInput, $output);
}

Я попробовал почти все, что пришло мне в голову. Я не видел нигде написанного, что --no-interaction не будет работать с командами, вызванными из другой команды. Каждый раз, когда я запускаю эту команду, я просто получаю следующее:

WARNING! You are about to execute a database migration that could result in schema changes 
    and data lost. Are you sure you wish to continue? (y/n)

Что тогда побуждает меня ответить. Есть идеи?

1 Ответ

0 голосов
/ 31 августа 2018

Я нашел проблему. Это был факт, что переменная $arguments была передана в new ArrayInput(). Я только устанавливал свойство InputInterface $input interactive на false, но моей другой вызванной команде я передавал совершенно другое $migrationInput, для которого свойство interactive не было установлено на false.

Делая так:

$migrationInput = new ArrayInput($arguments);
$migrationInput->setInteractive(false);
$command->run($migrationInput, $output);

Решил проблему. Однако я не могу понять, почему '--no-interaction' => true в моем массиве не выполняет свою работу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...