原则生成实体命名空间问题?



好的,我对教义有最后一个问题:生成:实体命令

我运行以下命令,并得到预期的文件

/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

现在第一行是:

MyNamespaceBundleMyNamespaceBundleEntityTblReports

但我认为它需要

MyNamespaceBundleMyNamespaceBundleEntityReportsTblReports

现在我运行最后一个命令

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 "MyNamespaceBundleMyNamespaceBundleEntityReports" 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. 我该如何解决它?

相关问题:

  • 将具有 Doctrine 的实体生成到单独的命名空间中
  • 单个表的实体生成

更新#1:

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

MyNamespaceBundleMyNamespaceBundleEntity

命令:

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

我运行了教义:生成:实体(双向),但仍然有错误。我决定将文件移动到此目录中

MyNamespaceBundleMyNamespaceBundleEntityReports

我运行了学说:生成:实体 agin(双向),但仍然有错误。 我查看了文件中的命名空间,看到它指向工作命名空间。我从以下位置更新:

MyNamespaceBundleMyNamespaceBundleEntityTblReports

MyNamespaceBundleMyNamespaceBundleEntityReportsTblReports

运行此命令

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

现在工作

Generating entities for namespace "MyNamespaceBundleMyNamespaceBundleEntityReports"

所以我想问题#3是:

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

我试过这个但没有骰子

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

文档:

  • http://symfony.com/doc/master/reference/configuration/doctrine.html

源:

  • https://github.com/doctrine/DoctrineBundle/blob/master/Command/ImportMappingDoctrineCommand.php
  • https://github.com/doctrine/DoctrineBundle/blob/master/Command/GenerateEntitiesDoctrineCommand.php

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

MyNamespaceBundleMyNamespaceBundleEntityTblReports: 
<yml> data.

您似乎将注释与 yml 混合在一起。 选择一个并坚持下去。 我不使用注释,所以剩下的就是 yml 注释。 原则:映射:使用 YML 选项导入/转换 生成 YML 文件将 YML 文件放在捆绑包/资源/配置/原则中。

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

相关内容

  • 没有找到相关文章

最新更新