我为用户表分配了一个外键(clinic_uuid,而不是主键)给诊所表,如下所示。
$table->foreign('clinic_uuid',100)->references('clinic_uuid')->on('clinics');
迁移后,我向诊所模型添加了“大量用户”关系。
public function users(){
return $this->hasMany(User::class);
}
还有与用户模型的“属于诊所”关系
public function clinic(){
return $this->belongsTo(Clinic::class,'clinic_uuid');
}
之后,我将一些添加到诊所表中。
clinic_uuid name
----------------------------------
a1111 dog clinic
a2222 cat clinic
还有用户表。
id clinic_uuid name
----------------------------------
1 a1111 jame
2 a1111 matt
然后,我按以下代码尝试使用控制器,但我只得到null。
Auth::user()->clinic()->get(); --> get null
User::find(1)->clinic()->get(); --> get null
感谢所有建议。
答案 0 :(得分:0)
答案 1 :(得分:0)
您将需要告诉Eloquent这两种关系的本地和外键分别是什么,因为它们都不遵循默认约定:
public function clinic()
{
return $this->belongsTo(Clinic::class, 'clinic_uuid', 'clinic_uuid');
}
public function users()
{
return $this->hasMany(User::class, 'clinic_uuid', 'clinic_uuid');
}
由于两个表的列名相同,因此在此示例中并不重要,但是您始终可以参考docs来确定关系方法中哪个列名应该放在哪里。