【问题标题】:hasManyThrough - Laravel 5.8hasManyThrough - Laravel 5.8
【发布时间】:2021-03-18 09:57:17
【问题描述】:

我的数据库表结构如下:

教室

  • id (int) PK
  • 名称(varchar)

课堂教师课程

  • id (int) PK
  • id_classroom (int) FK
  • id_teacher (int) FK
  • id_course (int) FK

课程

  • id (int) PK
  • 课程名称(varchar)

老师

  • id (int) PK
  • teacher_name (varchar)

到目前为止,我只有调用 ClassRoom 表和 ClassTeacherCourse 的代码,例如:

$class = Class::find($id)
                 ->with(['classcourseteacher'])
                 ->get();

Class 模型中的关系:

public function classcourseteacher() {
    return $this->hasMany('App\ClassCourseTeacher', 'id_class', 'id');
}

结果:

[
    {
        "id": 57,
        "id_school": 2,
        "class_name": "7 I",
        "classcourseteacher": [
            {
                "id": 406,
                "id_class": 57,
                "id_course": 9,
                "id_teacher": 68,
                "created_at": "2020-11-10 16:11:14",
                "updated_at": "2020-11-10 16:11:14"
            },
            {
                "id": 434,
                "id_class": 57,
                "id_course": 11,
                "id_teacher": 66,
                "created_at": "2020-11-10 16:11:14",
                "updated_at": "2020-11-10 16:11:14"
            },
        ]
    }
]

我已经阅读了 Eloquent: Relationships 关于 hasManyThrough 的内容,但在文档中与我的情况不同。

如何通过 Eloquent 调用 1 次:与课程和教师详细信息的关系?

【问题讨论】:

    标签: php laravel eloquent laravel-5.8


    【解决方案1】:

    ClassTeacherCourse课堂放老师和课程的关系

    function teacher() {
        return $this->belongsTo(Teacher::class);
    }
    
    function course() {
        return $this->belongsTo(Course::class);
    }
    

    然后你可以这样调用它来获取详细信息

    $class = Class::find($id)
                 ->with(['classcourseteacher.teacher', 'classcourseteacher.course'])
                 ->get();
    

    【讨论】:

      猜你喜欢
      • 2014-09-19
      • 1970-01-01
      • 1970-01-01
      • 2018-07-24
      • 2014-08-14
      • 2017-12-08
      • 2018-10-18
      • 2021-08-30
      • 1970-01-01
      相关资源
      最近更新 更多