卡在 Laravel 查询中

阿尔法

试图在控制器中进行查询。

我在数据库中有两个表:

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 的多态性。在您的情况下,您需要以这种方式使用belongsTohasMany对象。

在您的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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章