有一个User
类,它有两种类型的用户,如patient
和doctor
。因此,我创建了另一个属性,用于描述patient
和doctor
之间的关系,医生可以有许多患者。所以,如果用户是专利,他应该有doctorId
,如果不是,doctorId
是NULL。
以下是我的User.orm.yml
:
Acme\Bundle\DemoBundle\Entity\User:
type: entity
table: User
id:
id:
type: integer
generator: { strategy: AUTO }
fields:
name:
type: string
length: 30
lastName:
type: string
length: 30
email:
type: string
length: 60
unique: true
username:
type: string
length: 10
unique: true
password:
type: string
length: 100
unique: false
doctorId:
type: integer
unique: false
nullable: true
dateCreated:
type: datetime
manyToMany:
roles:
targetEntity: Role
mappedBy: users
如何将doctorId
Map为引用id
的外键?
2条答案
按热度按时间ttisahbt1#
您可以在Doctrine文档中找到自引用一对多关系的说明:
https://www.doctrine-project.org/projects/doctrine-orm/en/latest/reference/association-mapping.html#one-to-many-self-referencing
s8vozzvw2#
关于教条,你可能想看看关联Map。http://docs.doctrine-project.org/en/latest/reference/association-mapping.html。在您的情况下,您正在寻找一对多的自引用关系http://docs.doctrine-project.org/en/latest/reference/association-mapping.html#one-to-many-self-referencing。
一个医生可以有很多病人,一个病人可以有很多医生吗?如果是这样的话,你就有一个多对多的关系,你可以使用交叉引用表作为连接表来Map出来。我觉得最好的建模方法是在你的用户表中设置一个userTypeId,其中值1可以是医生,2可以是病人等。一个医生可以有很多病人,一个病人也可以看很多医生。如果您添加了新的用户类型,如护士等,这也是可扩展的。