Symfony命令--no-interaction不起作用

问题描述 投票:3回答:1

我有一个具有两个不同数据库连接的设置,这也意味着两个不同的实体管理器。我正在尝试使用doctrine:migrations:migrate--em--configuration选项创建一个调用--no-interaction命令的Symfony CLI命令。然而,尽管有--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)

然后提示我回答。任何的想法?

php symfony doctrine-orm
1个回答
3
投票

我发现了这个问题。事实上,$arguments变量被传递给new ArrayInput()。我只是将InputInterface $inputinteractive属性设置为false,但是对于我的另一个命令,我传递了一个完全不同的$migrationInput,它没有将interactive属性设置为false

这样做:

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

解决了这个问题。我无法弄清楚为什么我阵列中的'--no-interaction' => true不能正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.