在Laravel中嵌套hasMany()关系

时间:2017-08-07 10:21:24

标签: laravel laravel-5 relationship

所以我有一个CourseTerm模型和CourseAttendee模型,我想在一个关系中找到与时间重叠并拥有相同讲师的课程的参与者。以下是相关代码:

class CourseTerm extends Model
{
    public function directAttendees()
    {
        return $this->hasMany('CourseAttendee');
    }

    public function overlappingCourseTerms()
    {
        return $this->lecturer->givenCourseTerms() // a hasMany relationship that returns CourseTerms
                    ->where('course_start', '<=', $this->course_start)
                    ->where('course_end', '>=', $this->course_end);
    }
}

现在我想让参与所有相关课程的与会者成为一个有很多关系,如下:

public function allAttendees()
{
     return $this->overlappingCourseTerms->directAttendees();
}

但是,这当然不起作用,因为overlapCourseTerms返回的集合没有directAttendees()方法。 Eloquent模型的hasManyThrough()方法仅允许模型的类,而不是关系(如overlapCourseTerms()之一),所以我也无法使用它。

您对如何实现预期行为有任何建议吗?

0 个答案:

没有答案