学说:扩展实体类

mkk*_*mkk 14 php orm doctrine

我想扩展Entity\Base类,如何在Doctrine 2.1中做到这一点?我的研究表明,每当遇到问题时,他都会切换到Doctrine 1.2:)我正在使用yaml配置

Gui*_*nco 20

Doctrine 2.X实体作为POPO(普通的旧PHP对象)工作.为了实现正确扩展,Doctrine强制您使用JPA中的一个名为Mapped Super Classes的概念.这个想法非常简单.每当你想拥有一个基类并希望你的实体从它扩展时(我不是在谈论数据库级别的继承),你需要做的就是将你的Base类创建为MappedSuperClass.

这是一个例子:http://www.doctrine-project.org/docs/orm/2.1/en/reference/inheritance-mapping.html#mapped-superclasses

谢谢

  • 你知道,你可以发布解决方案.这个社区的全部目的是互相帮助. (3认同)
  • 今天的生活[学说2.6参考Mapped Superclasses](https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/inheritance-mapping.html#mapped-superclasses) (3认同)

Luc*_*aka 7

这里是Guilherme Blanco的解决方案.我希望有一个发布的解决方案,而不是一个最终将来不再有用的链接:

<?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
}
Run Code Online (Sandbox Code Playgroud)

  • 你是一位先知;)谢谢 (3认同)