首页 > 解决方案 > 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');
}

标签: phpdatabaselaravelmodel

解决方案


根据您的描述,学生应该属于用户,也应该属于教

在用户模型中


public function student(){

    return $this->hasMany(Student::class,'student_id');
}

在学生模型中


public function user(){

    return $this->belongsTo(User::class,'student_id');
}

推荐阅读