假设我有一个用户和约会表。
用户 - ID,姓名,电子邮件,类型(医生/病人)
约会 - id,doctor_user_id,patient_user_id
我的用户表数据 -
我的约会表数据 -
我可以使用用户表从约会中创建两个属于 关系。
正如您可以看到我的约会表格一样,我只想将用户类型医生存储到 doctor_user_id 和患者到 patient_user_id 。但在这种情况下,我可以将任何用户ID添加到 doctor_user_id 字段,无论是医生还是病人,但我只想添加用户ID作为doctor_user_id,只有其类型是医生。
我知道如何使用两个不同的表来实现这一目标,但我想知道有没有办法通过单个用户表来实现这一目标,谢谢。
答案 0 :(得分:3)
是的,您可以通过仅创建一个用户表来实现此目的。
为约会表的“doctor_user_id”和“patient_user_id”创建2个外键,该表引用User表。
答案 1 :(得分:3)
您可以使用两个belongsToMany()
关系,并在我转动时使用该表:
public function doctors()
{
return $this->belongsToMany(User::class, 'appointment', 'patient_user_id', 'doctor_user_id');
}
public function patients()
{
return $this->belongsToMany(User::class, 'appointment', 'doctor_user_id', 'patient_user_id');
}
如果您经常使用appointment
表格,您还可以为hasMany()
模型添加两个Appointment
关系,并为{{1}添加两个belongsTo()
关系模型。因此,在这种情况下,您可以同时使用User
,belongsToMany()
和hasMany()
关系。