1

使用 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 创建两个条目。

4

0 回答 0