使用 Doctrine ORM 2.4,我想实现类似于以下示例的内容:
Person {
private $name;
private $email;
}
Student extends Person {
private $favoriteTeacher;
}
Teacher extends Person {
private $subjectsTaught;
}
但是,我希望一个人能够同时成为学生和老师,就像自然人在一种情况下是学生,在另一种情况下是老师一样。
在数据库级别上,这意味着我们在系统中只有一次该人的数据,而不必在该人的电子邮件更改时更改两次电子邮件。
数据库级别的表示可能是这样的:
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 结构可以做到这一点?据我了解,当您有一个老师和一个学生时,教义文档中提供的所有替代方案都是为 Person 创建两个条目。