joschi127 / doctrine-entity-override-bundle
Symfony 扩展包,允许通过继承覆盖实体
v0.7.2
2019-10-05 22:55 UTC
Requires
- php: >=5.6.0
- doctrine/doctrine-bundle: ^1.6.2
- doctrine/orm: ^2.4.8
- symfony/framework-bundle: ^2.7.12|^3.0.6|^4.0
Requires (Dev)
- friendsofsymfony/user-bundle: ^2.1
- monolog/monolog: ^1.0
- phpunit/phpunit: 5.7.*
- symfony/finder: ^2.4|^3.0|^4.0
- symfony/monolog-bundle: ^2.4|^3.0|^4.0
- symfony/swiftmailer-bundle: ^2.3|^3.0
README
Symfony 扩展包,允许通过继承覆盖实体
配置
添加到 app/config/config.yml
# override entities
joschi127_doctrine_entity_override:
overridden_entities:
# Keep in mind: if you are using multi level inheritance, you have to use the top most super class on the
# left side
OriginalBundle\Entity\Example: CustomizedBundle\Entity\Example
提示
- 如果您使用多级继承,您必须在
overridden_entities
配置下使用最顶层的超类。 - 如果您使用多级继承,中间类的属性必须为受保护的,否则您将收到一个
ReflectionException
,指出Property ...::$propertyName 不存在
。 - 建议将原始实体定义为
MappedSuperclass
。如果您是自己的代码,则可以这样做。如果您想扩展其他第三方实体,这通常应该工作。但是,映射的一部分将由该包的LoadORMMetadataSubscriber
内部重新生成,并且至少一些 Doctrine 映射功能可能不受支持,您可能会遇到问题。 - 不支持使用
@ORM\AttributeOverrides
,而是只需在您的自定义实体类中覆盖属性,并像通常一样在您的自定义实体中添加 ORM 映射。然后该包将卸载原始映射配置,并仅使用您的自定义映射。 - 请查看 Tests/Functional/src 文件夹 以获取一些示例代码。