如果我从命令行执行: php bin / console doctrine:migrations:migrate -n --em = views
一切顺利。但是,当我尝试从另一个命令执行此命令时,我不知道如何将InputOption :: VALUE_NONE参数放入ArrayInput。
private function executeMigrate($connection = null) {
$theCommandStr = 'doctrine:migrations:migrate';
$command = $this->getApplication()->find($theCommandStr) ;
if ($command)
{
$arguments = [];
$arguments['-n'] = null; //<-- THE PROBLEM IS HERE!
$arguments['--em'] = 'views';
$input = new ArrayInput($arguments);
$output = new BufferedOutput();
$returnCode = $command->run($input, $output);
if($returnCode == 0) {
echo "OK";
} else {
echo "KO";
}
}
}
我已经测试过了(没有运气): $ arguments [' - n'] = null; $ arguments [' - n'] =“”;
使用这两个选项,命令已执行,但忽略了-n修饰符。
我正在使用Symfony v.3.3。
答案 0 :(得分:0)
解决。如果要在其他命令中的命令中使用--no-interaction或-n modifier,则必须使用ArrayInput :: setInteractive方法:
以前的代码如下:
private function executeMigrate($connection = null) {
$theCommandStr = 'doctrine:migrations:migrate';
$command = $this->getApplication()->find($theCommandStr) ;
if ($command)
{
$arguments = [];
$arguments['--em'] = 'views';
$input = new ArrayInput($arguments);
$input->setInteractive(false);
$output = new BufferedOutput();
$returnCode = $command->run($input, $output);
if($returnCode == 0) {
echo "OK";
} else {
echo "KO";
}
}
}
否则,它不会起作用。