Laravel远程一对一和远程一对多的反向写法

admin 阅读:62 2024-03-02

在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');
    }
}
声明

1、部分文章来源于网络,仅作为参考。
2、如果网站中图片和文字侵犯了您的版权,请联系1943759704@qq.com处理!

搜索