Laravel-约束急切加载-排除筛选的父级

Laravel-约束急切加载-排除筛选的父级,laravel,Laravel,相关的: 学生有助学金,可以报名,可以上课 问题是底部返回的是“所有活动学生”列表,然后只显示“完成日期”=日期(“Y”)的嵌套子数据。这不是期望的结果。如果学生没有完成日期=日期('Y')的课程,那么期望的结果是不向学生展示 当前示例返回的数据: John Doe | RefABC | PASS123 | 2019-01-01 Jane Doe | RefVCB | PASS321 | 2019-02-01 - Course ABC | 2016-01-01 | 2019-03-01 |

相关的:

学生有助学金,可以报名,可以上课

问题是底部返回的是“所有活动学生”列表,然后只显示“完成日期”=日期(“Y”)的嵌套子数据。这不是期望的结果。如果学生没有完成日期=日期('Y')的课程,那么期望的结果是不向学生展示

当前示例返回的数据:

John Doe | RefABC | PASS123 | 2019-01-01
Jane Doe | RefVCB | PASS321 | 2019-02-01
 - Course ABC |  2016-01-01 | 2019-03-01 | 2019-03-01
Blane Doe | RefFGH | PASS345 | 2019-03-01
 - Course XYZ |  2014-01-01 | 2019-02-01 | 2019-02-01
Bob Doe | RefDFG | PASS756 | 2019-04-01
Candy Doe | RefASZ | PASS123 | 2019-01-01
我真正想要得到的是:

Jane Doe | RefVCB | PASS321 | 2019-02-01
 - Course ABC |  2016-01-01 | 2019-03-01 | 2019-03-01
Blane Doe | RefFGH | PASS345 | 2019-03-01
 - Course XYZ |  2014-01-01 | 2019-02-01 | 2019-02-01
学生模型:

public function bursaries() {
    return $this->hasMany('App\StudentBursary');
}
public function courses() {
    return $this->hasMany('App\StudentBursaryEnrolmentCourse');
}
学生助学金模式:

public function enrolments() {
    return $this->hasMany('App\StudentBursaryEnrolment');
}
学生助学金入学模式:

public function bursaries() {
    return $this->hasMany('App\StudentBursary');
}
public function courses() {
    return $this->hasMany('App\StudentBursaryEnrolmentCourse');
}
控制器(具体功能内容…):

视图:


学生全名
助学金提供者参考
护照号码
护照过期
课程
生效日期
竣工日期
返程航班日期
@如果(学生)
@foreach($student作为$student)
{{$student->getStudentFullNameAttribute()}
{{$student->bursary\u provider\u reference}
{{$student->passport_number}
{{$student->passport_expiration}
@如果($学生->助学金)
@foreach($student->bursary作为$bursary)
@if(助学金->入学)
@foreach($bursary->注册为$incorporation)
@如果($注册->课程)
@foreach($注册->课程为$课程)
{{$course->course}
{{$course->开始日期}
{{$course->完成日期}
{{$bursary->返回航班日期}
@endforeach
@恩迪夫
@endforeach
@恩迪夫
@endforeach
@恩迪夫
@endforeach
@恩迪夫

您需要在
学生
结果和课程上使用条件

仅获取完成日期为日期('Y')的课程的学生

$students=$bursary\u administrator->students()->其中([['status','=',1]]
->whereHas('bursaries.enrolutions.courses',函数($query){
$query->whereYear('completion_date','=',date('Y');
})
->与([
“助学金”,
“助学金、入学”,
“助学金、入学率、课程”])
->get();
返回视图('baadmin.reports.active_students',compact('report_title','bursary_administrator','students');
这将返回所需的所有课程的学生

如果您只想获得相关课程(结业日期=日期('Y')),请在带有('bursaries.enrolments.courses')的
上添加条件。

$students=$bursary\u administrator->students()->其中([['status','=',1]]
->whereHas('bursaries.enrolutions.courses',函数($query){
$query->whereYear('completion_date','=',date('Y');
})
->与([
“助学金”,
“助学金、入学”,
“助学金.注册.课程”=>函数($query){
$query->whereYear('completion_date','=',date('Y');
}
])
->get();
返回视图('baadmin.reports.active_students',compact('report_title','bursary_administrator','students');

您可以使用
where has
根据关系查询表
学生
。与
$bursary\u administrator
相关的模型是什么?那里的
学生
关系是如何设置的?@SupaMonkey,答案对您有用吗?你试过了吗?