在Symfony命令中运行时,Doctrine load fixtures --no-interaction标志不起作用

时间:2014-05-30 14:01:31

标签: symfony doctrine-orm fixtures

doctrine上的--no-interaction标志:fixtures:load命令在Symfony命令中无法运行。它通过终端工作。我是在正确地说它?

当我从捆绑包中运行时:

/**
 * Loads the fixtures
 * @param \Symfony\Component\Console\Output\OutputInterface $oOutput
 * @return \Symfony\Component\Console\Output\OutputInterface
 */
protected function loadFixturesCommand($oOutput) {
    $oOutput->writeln('<fg=white>Attempting to load fixtures</fg=white>');
    $updateCommand = $this->getApplication()->find('doctrine:fixtures:load');

    $updateArguments = array(
        'command' => 'doctrine:fixtures:load',
        '--no-interaction' => true,
    );

    $updateInput = new ArrayInput($updateArguments);
    $updateCommand->run($updateInput, $oOutput);

    try {
        $updateCommand->run($updateInput, $oOutput);
    } catch (ContextErrorException $e) {
        //..
    }
    return $this;
} 

我被提示加载灯具

但是运行这个:

php app/console doctrine:fixtures:load --no-interaction

不提示我。

我做错了什么?

2 个答案:

答案 0 :(得分:15)

我找到了解决方案。 只需致电:

$input->setInteractive(false);

像这样:

protected function loadFixturesCommand($oOutput) {
    $oOutput->writeln('<fg=white>Attempting to load fixtures</fg=white>');
    $updateCommand = $this->getApplication()->find('doctrine:fixtures:load');

    $updateArguments = array(
        'command' => 'doctrine:fixtures:load'
    );

    $updateInput = new ArrayInput($updateArguments);
    $updateInput->setInteractive(false);
    $updateCommand->run($updateInput, $oOutput);

    try {
        $updateCommand->run($updateInput, $oOutput);
    } catch (ContextErrorException $e) {
        //..
    }
    return $this;
}

答案 1 :(得分:0)

您可以使用--append param来抑制互动。

即。 doctrine:fixtures:load --append