在Laravel模型关联中,提供了远程一对一关联和远程一对多关联,但是文档中却没有说明这两种关联的反向写法。其实Laravel中的远程一对一和远程一对多关联也有反向关联,并且十分简单,都是 hasOneThrough
关联,下面举例说明。
有如下数据表:
colleges
id - integer
name - string
majors
id - integer
college_id - integer
name - string
students
id - integer
major_id - integer
name - string
获取指定学院的所有学生(远程一对多)
class College extends Model
{
public function students()
{
return $this->hasManyThrough(Student::class,Major::class);
}
}
获取指定学生所属的学院,注意外键的定义(远程一对多的反向,也就是远程一对一)
class Student extends Model
{
public function department()
{
return $this->hasOneThrough(Department::class,Major::Class,'id','id','major_id','department_id');
}
}