【问题标题】:Doctrine Generate Entities Namespace Issue?学说生成实体命名空间问题?
【发布时间】:2012-12-07 15:11:18
【问题描述】:

好的,我还有一个关于教条的最后一个问题:generate:entities 命令

我运行以下命令并在

中获得预期的文件
/src/MyNamespace/Bundle/MyNamespaceBundle/Resources/config/doctrine/metadata/orm

命令:

php app/console doctrine:mapping:convert yml ./src/MyNamespace/Bundle/MyNamespaceBundle/Resources/config/doctrine/metadata/orm --from-database --em=my_manager --filter=TblReports --verbose

我看到了TblReports.orm.yml 文件,第一行是:

TblReports

命令:(这应该是注释而不是yml吗?)

php app/console doctrine:mapping:import MyNamespaceBundle yml --em=my_manager --filter=TblReports

我运行上面的命令我在这里得到文件

/src/MyNamespace/Bundle/MyNamespaceBundle/Resources/config/doctrine/

与第一个命令生成的第一个文件同名,只是在不同的位置和第一行(我假设是命名空间)

TblReports.orm.yml

现在第一行是:

MyNamespace\Bundle\MyNamespaceBundle\Entity\TblReports

但我认为它需要

MyNamespace\Bundle\MyNamespaceBundle\Entity\Reports\TblReports

现在我运行最后一个命令

php app/console doctrine:generate:entities MyNamespaceBundle --path=src --no-backup

我收到此错误

[RuntimeException]                                                    
  Bundle "MyNamespaceBundle" does not contain any mapped entities.

如果我像这样运行命令

php app/console doctrine:generate:entities MyNamespaceBundle:Reports --path=src --no-backup

我收到此错误(但名称空间看起来正确)

  [RuntimeException]                                                                                   
  Namespace "MyNamespace\Bundle\MyNamespaceBundle\Entity\Reports" does not contain any mapped entities. 

这里是 my_manager (config.yml)

# Doctrine Configuration
doctrine:
    dbal:
      default_connection: my_database
      connections:
        my_database:
          driver:   pdo_pgsql
          port:     5432
          dbname:   tbl_reports
          user:     foo_user
          password: foo_pass
          charset:  UTF8
          mapping_types:
            bit: string

    orm:
        auto_generate_proxy_classes: "%kernel.debug%"
        default_entity_manager: my_manager
        entity_managers:
            my_manager:
                connection: my_database
                mappings:
                    MyNamespaceBundle:
                      mapping: true
                      dir: Entity/Reports

在 config_dev.yml 中(我使用 dev 和 prod yml 文件来控制我可以连接到的主机)

# Doctrine Configuration
doctrine:
    dbal:
      connections:
        my_database:
          host: 172.0.0.1

问题:

  1. 为什么会出现此错误?
  2. 我该如何解决?

相关问题:

更新 #1:

好吧,我以annotation 而不是yml 运行第二个命令,并且文件是在以下位置生成的:

MyNamespace\Bundle\MyNamespaceBundle\Entity

命令:

php app/console doctrine:mapping:import MyNamespaceBundle annotation --em=my_manager --filter=TblReports

我运行了学说:generate:entities(双向),但仍然出现错误。我决定将文件移动到这个目录中

MyNamespace\Bundle\MyNamespaceBundle\Entity\Reports

我再次运行了学说:generate:entities(双向),但仍然出现错误。 我查看了文件中的命名空间,发现它指向工作命名空间。我更新自:

MyNamespace\Bundle\MyNamespaceBundle\Entity\TblReports

MyNamespace\Bundle\MyNamespaceBundle\Entity\Reports\TblReports

运行这个命令

php app/console doctrine:generate:entities MyNamespaceBundle:Reports --path=src --no-backup

现在可以使用了

Generating entities for namespace "MyNamespace\Bundle\MyNamespaceBundle\Entity\Reports"

所以我猜第三个问题是:

  1. 如何获得第二个命令以在导入时添加正确的命名空间?

我试过了,但没有骰子

php app/console doctrine:mapping:import MyNamespaceBundle:Reports annotation --em=my_manager --filter=TblReports

文档:

来源:

【问题讨论】:

    标签: php symfony doctrine-orm entity


    【解决方案1】:

    您的第一行需要以 : 结尾,如:

    MyNamespace\Bundle\MyNamespaceBundle\Entity\TblReports: 
      <yml> data.
    

    您似乎将注释与 yml 混合在一起。选择一个并坚持下去。我不使用注解,所以剩下的就是yml cmets。使用 yml 选项的学说:映射:导入/转换生成 yml 文件将 yml 文件放在 Bundle/Resources/config/doctrine 中。

    然后使用yml文件的集合来制作你的实体类,并将它们放在每个yml文件中指定的位置,默认是NamespaceBundle\Entity。

    【讨论】:

    • 谢谢,我明白了。如何更改该命名空间?从 NamespaceBundle\Entity 到 NamespaceBundle\Another\Namespace\Entity
    • 将教义文件放入与该命名空间关联的目录中,并在那里生成它们?
    • 你能列出所有三个命令吗?我正在尝试您的建议,但我得到的只是错误。顺序重要吗?
    • doctrine:mapping:import Bundle yml php app/console dictionary:generate:entities MyNamespaceBundle --path=src 但是你已经完成了这些。我的理解是 symfony 的模型是将你的报告实体放在他们自己的包中,因此 Entity\Reports 目录会给你带来麻烦
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-28
    相关资源
    最近更新 更多