如何执行命令doctrine:generate:系统内的实体?

时间:2014-06-16 11:54:30

标签: symfony doctrine-orm symfony-2.3

我有一个奇怪的错误。我试图在系统中执行Symfony doctrine控制台命令。我确实设法在系统内执行'doctrine:mapping:import'而没有任何问题。看看下面的代码,

protected function execute(InputInterface $input, OutputInterface $output)
{
    $import_arguments = array(
        '--force' => true,
        'bundle' => 'TestConsoleCommandBundle',
        'mapping-type' => 'yml',
    );
    $input = new ArrayInput($import_arguments);
    $command = $this->getApplication()->find('doctrine:mapping:import');
    $command->run($input, $output);  
}

但是当我在系统中执行'doctrine:generate:entities'命令时,它会说RuntimeException,参数不够。据我所知,只有'name'是这个命令寻找的唯一强制参数。看看下面的代码,

protected function execute(InputInterface $input, OutputInterface $output)
{
    $command = $this->getApplication()->find('doctrine:generate:entities');   
        $arguments = array(
            '--path' => "src/ESERV/MAIN/ActivityBundle/Entity",
            '--no-backup' => 'true',
            'name' => 'ESERVMAINActivityBundle'

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

我在这里感到惊讶,因为这样一个简单的事情似乎无法奏效。任何人都可以请告诉我这里可能缺少的东西。

非常感谢提前。

1 个答案:

答案 0 :(得分:2)

第一个参数需要是您正在调用的命令。

取自docs ..

protected function execute(InputInterface $input, OutputInterface $output)
{
    $command = $this->getApplication()->find('demo:greet');

    $arguments = array(
        'command' => 'demo:greet',
        'name'    => 'Fabien',
        '--yell'  => true,
    );

    $input = new ArrayInput($arguments);
    $returnCode = $command->run($input, $output);

    // ...
}