我想扩展Entity\Base类,在Doctrine 2.1中如何实现?我的研究表明,每当有人遇到这样做的问题时,他就会切换到Doctrine1.2:)n我正在使用yaml配置
yi0zb3m41#
Doctrine 2.X实体作为POPO(Plain Old PHP Object)工作。为了实现正确的扩展,Doctrine强制您使用JPA中的一个概念,称为Map超类。这个想法很简单。无论何时,只要你想拥有一个基类,并希望你的实体从它扩展(我不是在谈论DB级别的继承),你所需要做的就是将基类创建为MappedSuperClass。下面是一个例子:https://www.doctrine-project.org/projects/doctrine-orm/en/latest/reference/inheritance-mapping.html谢谢
pkmbmrz72#
这里的解决方案从吉列尔梅布兰科链接。我喜欢有一个张贴的解决方案,而不是一个链接,最终可能不再工作在未来:
<?php /** @MappedSuperclass */ class MappedSuperclassBase { /** @Column(type="integer") */ protected $mapped1; /** @Column(type="string") */ protected $mapped2; /** * @OneToOne(targetEntity="MappedSuperclassRelated1") * @JoinColumn(name="related1_id", referencedColumnName="id") */ protected $mappedRelated1; // ... more fields and methods } /** @Entity */ class EntitySubClass extends MappedSuperclassBase { /** @Id @Column(type="integer") */ private $id; /** @Column(type="string") */ private $name; // ... more fields and methods }
2条答案
按热度按时间yi0zb3m41#
Doctrine 2.X实体作为POPO(Plain Old PHP Object)工作。为了实现正确的扩展,Doctrine强制您使用JPA中的一个概念,称为Map超类。这个想法很简单。无论何时,只要你想拥有一个基类,并希望你的实体从它扩展(我不是在谈论DB级别的继承),你所需要做的就是将基类创建为MappedSuperClass。
下面是一个例子:https://www.doctrine-project.org/projects/doctrine-orm/en/latest/reference/inheritance-mapping.html
谢谢
pkmbmrz72#
这里的解决方案从吉列尔梅布兰科链接。我喜欢有一个张贴的解决方案,而不是一个链接,最终可能不再工作在未来: