我遇到了特定于Doctrine ORM实体映射和覆盖EkinoWordpressBundle的供应商实体的问题。我知道有一些功能可以覆盖bundle中的默认bundle实体。当我运行doctrine:schema:update时,我得到的SchemaExceptions类似于'表格,名称为wp_users'已经存在。我试图找出如何从捆绑中忽略实体的默认学说映射以避免此问题。
到目前为止,我所做的是:
我不清楚定义自定义实体管理器以及如何帮助缓解我的问题,正如捆绑软件开发人员所建议的那样https://github.com/ekino/EkinoWordpressBundle/issues/71
我也使用基于yml的映射定义,以防止可能的解决方案。
答案 0 :(得分:0)
似乎Doctrine仍然认为Ekino' User'仍然是一个实体,而不是专门使用你的实体。我不熟悉Ekino。如果它使用基于注释的配置,您可能必须创建自己的AnnotationDriver子类并让它过滤掉您不想要的Ekino类。
在ClassMetadata的低级代码中玩游戏实际上非常有趣,但这样做会让您自担风险。
答案 1 :(得分:0)
我从一位伙伴那里得到了一些帮助,他帮助我了解维护者提出的建议解决方案原来要求我做什么。
所以在我的config.yml中,我的学说配置有以下内容
doctrine:
orm:
...
entity_managers:
default:
mappings:
MyCustomAppBundle: ~
wordpress:
mappings:
EkinoWordpressBundle: ~
这解决了部分问题。我没有得到关于已经存在的表格的原始SchemaExceptions。由于我只是从捆绑包中替换了两个实体,其中一些不再属于原始实体的ClassMetadata中的关联,所以我得到了关于缺失实体的其他错误,这些错误通过将以下内容添加到doctrine:orm:
来解决配置定义:
resolve_target_entities:
Ekino\WordpressBundle\Entity\User: App\Bundle\MyCustomAppBundle\Entity\User
Ekino\WordpressBundle\Entity\UserMeta: App\Bundle\MyCustomAppBundle\Entity\UserMeta
我最终因为必须定义单独的实体经理而放弃了学说自动化,但我认为这是一个好的妥协。