试图在控制器中进行查询。
我在数据库中有两个表:
students: id,name, surname,gender
student_marks: id,student_id,year_id, subject_id, mark_id ...
我想要的是统计所有学生的性别是女性还是男性的分数。
$girls = StudentMarks::where('student_id','=',Student::where('gender','female')->value('id'))->count();
但什么也没有出现。
你需要研究 Laravel 的多态性。在您的情况下,您需要以这种方式使用belongsTo
和hasMany
对象。
在您的Student
模型中,添加以下函数
public function students_marks(){
return $this->hasMany(StudentMark::class);
}
在您的StudentMark
模型中,添加以下函数
public function student(){
return $this->belongsTo(Student::class, 'student_id', 'id');
}
查询时,使用该whereHas
子句进行查询,如下所示
$student_marks = StudentMark::with('student')
->whereHas('student', function($student){
$student->where('gender', 'female');
})->get()->count();
这应该给你计数。有关您自己的知识,请阅读更多内容Laravel Eloquent EagerLoading
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句