【问题标题】:Symfony2 Generate Doctrine Entities from .yml filesSymfony2 从 .yml 文件生成 Doctrine 实体
【发布时间】:2012-02-26 14:16:41
【问题描述】:

所以我有一个现有的数据库,但我无法按照此处列出的步骤进行操作:http://symfony.com/doc/current/cookbook/doctrine/reverse_engineering.html,因为我的一些表具有主键的外键。

我的解决方案是创建一个没有外键约束的数据库副本,并首先从中生成 .yaml 文件。

所以现在我在 ./src/My/MainBundle/Resources/config/doctrine/metadata/orm 中有 XXX.orm.yml 文件

接下来,我尝试使用以下命令将这些 .yml 文件转换为带有注释的实体类: php 应用程序/控制台原则:映射:导入 MyMainBundle 注释 但是,这忽略了我的 .yml 文件。它要么从我的数据库中生成没有外键的泛型类,要么在我的真实数据库上使用它时抛出错误。它甚至从不查看我的 .yml 文件。

所以我只想知道,如何将 *.orm.yml 文件转换为实体?

【问题讨论】:

  • 不知何故我得到了这个工作,但我不得不说这样做的文档非常差,我不得不做一些不同的事情......
  • 嗨。您应该发布您的解决方案并将其标记为已回答。过去几天我一直在研究 Doctrine 的逆向工程,我很想看看你的方法。
  • 我认为下面的答案是有效的,不记得了,但我会尽快将其标记为已回答。
  • 有同样的问题,但无法让它运行。如何将 .yml 文件转换为实体。由于文档不正确,我正在浪费时间来弄清楚。 code (C:\Users\Umra\myBookShop>php app\console 学说:mapping:import AppBundle 注释 --path="./src" 警告:模块 'openssl' 已加载到第 0 行的未知警告:模块' openssl' 已经加载到 Unknown on line 0 [Symfony\Component\Console\Exception\RuntimeException] “--path” 选项不存在。)

标签: symfony doctrine-orm


【解决方案1】:

我不能 100% 确定这是否是我修复它所要做的全部,但我认为解决方案就像移动我的 .orm.yml 文件一样简单

./src/My/MainBundle/Resources/config/doctrine/metadata/orm

./src/My/MainBundle/Resources/config/doctrine

正在运行

php app/console doctrine:mapping:import MyMainBundle annotation --path="./src"

【讨论】:

    【解决方案2】:

    import 之后使用convert 将yaml 转换为实体注解:

    php bin/console doctrine:mapping:convert annotation src
    

    有关更多信息,请参阅 --help。

    要强制覆盖实体文件,请使用 --force 选项。

    要创建访问器(getter 和 setter),请使用

    php bin/console doctrine:generate:entities yourBundle
    

    不要忘记检查 yml 文件是否不会覆盖注释更改的行为...

    问候

    【讨论】:

      【解决方案3】:

      --path 不是命令教义的选项:mapping:import

      【讨论】:

      • 现在是。至少在4.0.11 版本中。在某些情况下,它甚至是必需的。省略则报错:The --path option is required when passing a namespace (e.g. --path=src). If you intended to pass a bundle name, check your spelling.
      【解决方案4】:

      之后:

      php bin/console doctrine:mapping:import YourBundle yml
      

      使用:

      php bin/console doctrine:generate:entities YourBundle
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-11-20
        • 2013-04-07
        • 1970-01-01
        • 2012-05-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-14
        相关资源
        最近更新 更多