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

Add custom Symfony console commands to Doctrine ORM

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

我尝试查看是否可以使用

将我的自定义 'Task' 实体保存到数据库

$ vendor/bin/doctrine orm:schema-tool:update --dump-sql 运行 在控制台中。 SQL 已正确生成 - 到目前为止一切顺利。

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

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

包含此代码段的 bootstrap 文件是必需的 cli-config.php

从现在开始,callng $ vendor/bin/doctrine 显示的唯一可用命令是我的新自定义命令及其命名空间。 Doctrine ORM 附带的所有其他名称空间和命令均不可用。

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

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

您不应编辑 vendor 目录中的任何内容。 vendor/bin/doctrine 应该只需要 Doctrine 包附带的命令。

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