好的,我有一个关于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
我遇到了这个错误(但命名空间看起来是正确的)。
[RuntimeException]
Namespace "MyNamespace\Bundle\MyNamespaceBundle\Entity\Reports" does not contain any mapped entities.
这是我的管理器(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:
好吧,我以注释
而不是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(两种方式都试过),但仍然出现错误。 我查看了文件中的命名空间,并发现它指向了工作命名空间。我将其更新为:
MyNamespace\Bundle\MyNamespaceBundle\Entity\TblReports
to
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"
所以我猜第三个问题是:
- 第二个命令如何在导入时添加正确的命名空间?
我尝试了这个方法,但没有成功。
php app/console doctrine:mapping:import MyNamespaceBundle:Reports annotation --em=my_manager --filter=TblReports
Docs:
Source: