Symfony2 / Doctrine:重用继承实体的唯一基本实体

时间:2014-06-18 11:42:25

标签: php symfony doctrine-orm entity

在我的软件中,我有三个实体:人员,教师和审查员,具有以下结构:

<?php

class Person
{

    protected $id;

    protected $firstname;

    protected $lastname;
}

class Teacher extends Person
{
    protected $subjects;
}

class Examiner extends Person
{
    protected $certificates;
}

这是我的问题:我计划使用 JOINED Class Table 进行继承,我希望Person是一个唯一的实体。但是我想将它重用于Examiner和Teacher。所以我有两个不同的实体审查员和教师,但他们俩的一个基本实体人

例如:

Person | id | firstname | lastname
       | 1  | Emile     | Example

Teacher | id | subjects
        |  1 | Math, Religion, English   <--- Inheritance of Person with id 1

Examiner | id | certificate
         | 1  | Bachelor of Science   <--- Inheritance of Person with id 1, too

使用Doctrine注释是否有可能实现这一目标?我不喜欢将实体人作为两个显式类的关系。我喜欢重现一个现实世界的szenario,所以,例如一个老师没有一个人,而不是一个人。

希望有人知道我想要达到的目标。

谢谢!

1 个答案:

答案 0 :(得分:1)

我猜你应该声明一个抽象的MappedSuperClass&#34; human&#34;例如,它拥有共同的属性和方法。它不会被保留在数据库中。

然后宣布继承人的人,教师和考官,并声明他们自己的特定属性和方法。这是将存储在数据库中的具体表格。

这应该有所帮助:http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/inheritance-mapping.html

问候。