php - Laravel 用户模型中的多个一对一关系
问题描述
我试图与表用户、学生和老师建立一对一的关系。问题是,当我运行 LARAVEL TINKER 时,app\user::find('a123')->teacher 它显示 b345 数据并且不显示 NULL。Laravel 中的新功能。谢谢
下面是他们的PK表。
用户表
user_id | type
a123 | 1
b345 | 2
学生桌
student_id| name
a123 | Danny
教师桌
teacher_id| name
b345 | Mr.Mark
下面是模型。
用户模型
protected $primaryKey = 'user_id';
public function student(){
return $this->hasOne(student::class,'student_id');
}
public function teacher(){
return $this->hasOne(teacher::class,'teacher_id');
}
学生模型(教师模型与teacher_id作为PK一样)
protected $primaryKey = 'student_id';
public function User()
{
return $this->belongsTo(User::class,'user_id');
}
解决方案
根据您的描述,学生应该属于用户,也应该属于教
在用户模型中
public function student(){
return $this->hasMany(Student::class,'student_id');
}
在学生模型中
public function user(){
return $this->belongsTo(User::class,'student_id');
}
推荐阅读
- wix - WiX 有条件地更改产品名称
- custom-element - reportValidity() 与表单相关的 customElement 失败
- validation - 如何根据单元格值显示隐藏行?
- json - 在 Groovy 中将 Json 字符串解析为 GStrings
- php - Jquery onchange 后动态选择框未正确填充 TypeAhead 输入文本
- bayesian - 为什么即使我不包含任何观察结果 pymc3 也会运行?
- javascript - Google Scheet 和 Survey Monkey API 插件上的时间触发器
- javascript - 在 Tensorflow.js 的 model.evaluate 方法中使用来自 tf.data.csv 的数据时出现问题
- vb.net - VB.NET - 在面板中放置一个表单
- java - 使用 Java 8 Streams 完成删除循环