在 Symfony 中,src/AppBundle/Resources/config/doctrine/*.orm.yml 文件的用途是什么?

In Symfony, what's the purpose of src/AppBundle/Resources/config/doctrine/*.orm.yml files?

我想创建一个基于数据库的实体 table。我按照以下步骤操作: ,即在终端中:

php bin/console doctrine:mapping:import --force AppBundle yml --force --filter="Client"

php bin/console doctrine:mapping:convert annotation ./src/AppBundle/Entity --from-database --filter="Client"

php bin/console doctrine:generate:entities AppBundle:Client --no-backup

这创建了实体 "Client"。但是,它还在 src/AppBundle/Resources/config/doctrine 目录中创建了一个 client.orm.yml 文件。这会导致问题——也就是说,我的应用程序现在崩溃并显示一条错误消息:

"No mapping file found named 'User.orm.yml' for class 'AppBundle\Entity\User'"

我认为 Symfony/Doctrine 开始使用这些 yml 文件将我的 php 代码映射到数据库模式。但为什么?我不想要它。我只是想让 Doctrine 创建一个实体。

p.s。当我删除这个 client.orm.yml 文件时,一切正常。但是我不明白这是怎么回事,我该如何正确处理。

您可以在实体创建过程后删除这些文件。这些文件用于元数据映射。

你可以阅读这个 martinfowler.com/eaaCatalog/metadataMapping.html and martinfowler.com/eaaCatalog/dataMapper.html

为什么主义不删?因为,这是转换过程的第一步。在你命令 doctrine 之后创建这些文件的第一个命令,它正在创建用这些文件引用的实体文件。 :)