Laravel-选择顶部链接的表行

时间:2018-07-25 20:11:48

标签: laravel

让我们说我已经将表链接成这样:

lessons -> sections -> courses

(课程表是此链的顶部)

这些表通过id相互连接:

lessons.section_id = sections.id
sections.course_id = courses.id

(课程表与课程表没有直接链接)

现在如何在课程控制器的更新方法中选择相关课程表行?是这样吗?

$lesson = Lesson::find( $id );
$course = DB::table( 'lessons' )
    ->join( 'sections', 'lessons.section_id', '=', 'sections.id' )
    ->where( 'sections.id', $lesson->section_id )
    ->join( 'courses', 'sections.course_id', '=', 'courses.id' )
    ->first();

还是有更好的方法?

1 个答案:

答案 0 :(得分:0)

使用这种关系

课程模型

public function getCourseAttribute()
{
    return $this->section->course;
}

public function section()
{
    return $this->belongsTo(Section::class);
}

部分模型

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

您的控制器是这样的:

$lesson = Lesson::find( $id );
$course = $lesson->course;