所以我有一个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()之一),所以我也无法使用它。
您对如何实现预期行为有任何建议吗?