【问题标题】:Add custom Symfony console commands to Doctrine ORM将自定义 Symfony 控制台命令添加到 Doctrine ORM
【发布时间】:2015-04-15 17:48:25
【问题描述】:

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

  • “教义/orm”:“~2.4”,
  • “symfony/控制台”:“~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 需要具有此代码sn-p 的引导文件。

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

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

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

【问题讨论】:

    标签: symfony orm doctrine-orm


    【解决方案1】:

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

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

    【讨论】:

    • 您是对的,不应该更改供应商目录中的任何内容。请注意,我没有修改此目录中的任何代码。不过,您是对的,该问题的解决方案是创建一个新的可执行文件来加载您的自定义命令。其次,项目根目录中存在的强制cli-config.php 不应该require 您的新可执行文件,您可以在其中使用自定义命令初始化控制台应用程序。因此,我会接受你的回答。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2017-01-11
    • 2013-10-19
    • 1970-01-01
    • 1970-01-01
    • 2021-06-11
    • 2013-03-10
    • 1970-01-01
    • 2014-06-07
    相关资源
    最近更新 更多