如何使用条令在Symfony中的两个实体之间共享相似属性



我有两个条令实体非常相似,但并不相同。

我曾考虑创建一个接口或使用抽象方法在它们之间共享重复的代码,但不确定这是否是这方面的最佳实践。

我有两个独立的实体,它们有许多非常相似的setter和getter。

在这种情况下,在实体之间共享代码的最佳方法是什么?

您可以使用Embeddables

http://doctrine-orm.readthedocs.io/projects/doctrine-orm/en/latest/tutorials/embeddables.html


从条令的例子来看,我们有一个UserAddress

对于Company实体,Address也是embedded

/** @Entity */
class User
{
    // Here we embed our Address entity
    /** @Embedded(class = "Address") */
    private $address;
}
/** @Entity */
class Company
{
    /** @Embedded(class = "Address") */
    private $address;
}
/** @Embeddable */
class Address
{
    // Our `shared` entity
    /** @Column(type = "string") */
    private $street;
    /** @Column(type = "string") */
    private $postalCode;
    /** @Column(type = "string") */
    private $city;
    /** @Column(type = "string") */
    private $country;
}

阅读文档了解更多信息:

http://doctrine-orm.readthedocs.io/projects/doctrine-orm/en/latest/tutorials/embeddables.html

如果您的实体属于同一个域,我建议您考虑映射的超类。如果不是,PHP特性也是一个不错的选择

相关内容

  • 没有找到相关文章

最新更新