如何创建抽象类,并使用Doctrine2扩展它


How to create abstract class, and extend it using Doctrine2?

我想创建一个抽象类,称为Content。有两种实现:TextContentVideoContent

abstract class Content {
    /** @Id @Column(type="integer") @GeneratedValue **/
    private $id;
    /** @Column(type="string") **/
    private $title;
    /** getters and setters... **/
}

和实现:

class VideoContent extends Content {
    /** @Column(type="string") **/
    private $source;
    /** @Column(type="string") **/
    private $format;
    /** getters and setters... **/

}

class TextContent extends Content {
    /** @Column(type="string") **/
    private $text_data;
    /** getters and setters... **/

}

内容必须是抽象的,因为内容不能仅仅是内容。是视频还是文字。这在Doctrine2中怎么可能呢?这将如何在MySQL数据库中表示?

也许这对你有帮助

http://doctrine-orm.readthedocs.org/en/latest/reference/inheritance-mapping.html single-table-inheritance

您必须创建一个包含discriminator列的表