首页 > 解决方案 > 教义迁移自定义标志

问题描述

我在我的项目中使用了一个学说/迁移包,并想做一个自定义迁移命令。我设法做到了,并将其添加到自定义脚本中:

$cli->addCommands(array(
    ...
    new CustomCommand()
));

这工作正常,我已经能够覆盖我有兴趣更改的大部分内容(迁移逻辑、模板),但是我不确定如何添加一个可以添加多个参数的标志。

我的目标最终是做类似的事情:

php migration.php custom --table t1, t2, t3

我已经看到有一种添加“选项”的方法,例如:

protected function configure(): void
{
    $this
        ->setName('...')
        ->setAliases(['custom'])
        ->setDescription('...')
        ->addOption(
            'editor-cmd',
            null,
            InputOption::VALUE_OPTIONAL,
            'Open file with this command upon creation.'
        );
    parent::configure();
}

我试图挖掘包源以找出它,但我并不十分成功。我想在这种特定情况下'editor-cmd',应该在某个地方定义一个函数/命令,以便可以像这样将它添加到范围中,但我不确定这发生在哪里。

有人做过类似的事情吗?

标签: phpdoctrinemigration

解决方案


我想到了。看起来这根本不是回调,而是一个简单的 shell 参数。所以我添加了这个:

->addOption(
      'test',
      null,
      InputOption::VALUE_OPTIONAL,
      '...'
)

然后在下面的execute()方法中调用它:

$testCommand = $input->getOption('test');

所以现在我可以调用我的脚本:

php test-mig.php custom --test=my_test_var

和值$testCommand将是'my_test_var'


推荐阅读