将自定义Symfony控制台命令添加到Doctrine ORM



我正在开发一个在控制台中运行的简单todos应用程序。该应用程序只有两个依赖项:

  • "条令/形式":"~2.4"
  • "symfony/console":"~2.6"

我试着看看我是否可以用将我的自定义"任务"实体持久化到数据库中

$ vendor/bin/doctrine orm:schema-tool:update --dump-sql在控制台中运行。SQL是正确生成的——到目前为止还不错。

后来,我创建了自己的Symfony控制台命令todo:add。在引导程序文件中,我放置了以下代码来注册命令:

$application = new Application('Todos', '0.1.0');
$application->add(new AddTaskCommand($entityManager));
$application->run();

强制cli-config.php需要包含此代码段的引导程序文件。

从现在起,通过调用$ vendor/bin/doctrine显示的唯一可用命令是我的新自定义命令及其名称空间。所有其他带有条令ORM的名称空间和命令都不可用。

因此,无法再运行$ vendor/bin/doctrine orm:schema-tool:update

如何在不删除其他条令控制台命令的情况下添加自己的命令?

您不应该编辑vendor目录中的任何内容。vendor/bin/doctrine应该只适用于条令包附带的命令。

如果你想要自定义命令,你应该用你在其中显示的代码创建一个新的可执行文件(例如bin/my_app)。然后你就可以使用$ bin/my_app todo:add了。

最新更新