Doctrine继承,几个实体扩展同一个超类

时间:2013-10-01 13:29:23

标签: symfony inheritance doctrine-orm

使用Doctrine ORM 2.4我想实现一些看起来像这个例子的东西:

Person {
    private $name;
    private $email;
}

Student extends Person {
    private $favoriteTeacher;
}

Teacher extends Person {
    private $subjectsTaught;
}

但是,我希望一个人能够同时成为一名学生和一名教师,就像一个自然人在某种情况下是学生而在另一种情况下是一名教师。

在数据库级别上,这意味着我们只有系统中的人员数据ONCE,并且当该人的电子邮件更改时不必更改电子邮件两次。

数据库级别的表示可能是这样的:

person: 
- id (primary key)
- name 
- email

student:
- person_id (primary & foreign key)
- favoriteTeacher

teacher: 
- person_id (primary & foreign key)
- subjectsTaught

因此,以下示例数据将完全合理:

person: id=1, name=peter, ...
student: person_id=1, ...
teacher: person_id=1, ...

是否有一个Doctrine结构可以做到这一点?据我所知,当你有一个老师和一个学生时,所有提出的替代方案here in the doctrine docs都会为Person创建两个条目。

0 个答案:

没有答案