4

好的,我对教义有最后一个问题: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 agin(双向),但仍然出现错误。我查看了文件中的命名空间,发现它指向工作命名空间。我更新自:

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"

所以我猜问题#3是:

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

我试过这个但没有骰子

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

文件:

资源:

4

1 回答 1

0

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

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

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

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

于 2012-12-07T20:52:29.353 回答