gpt4 book ai didi

php - Doctrine 生成实体命名空间问题?

转载 作者:可可西里 更新时间:2023-10-31 23:49:16 25 4
gpt4 key购买 nike

好的,我还有关于 doctrine: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

我收到此错误(但 namespace 看起来正确)

  [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

我运行了 doctrine:generate:entities(两种方式),但仍然出现错误。我决定将文件移动到这个目录中

MyNamespace\Bundle\MyNamespaceBundle\Entity\Reports

我运行了 doctrine:generate:entities agin(两种方式),但仍然出现错误。我查看了文件中的 namespace ,发现它指向工作 namespace 。我更新自:

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

文档:

来源:

最佳答案

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

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

您似乎将注释与 yml 混合在一起。选择一个并坚持下去。我不使用注解,所以剩下的就是yml注释了。 doctrine:mapping:import/convert with yml 选项生成 yml 文件,将 yml 文件放入 Bundle/Resources/config/doctrine。

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

关于php - Doctrine 生成实体命名空间问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13765785/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com