首页 > 解决方案 > Eloquent:基于一对多关系查找表的所有记录

问题描述

我有两张桌子gradesstudents每个年级都属于一个学生。我想根据一些具有共同属性的学生(不是学生)来查找所有成绩,例如,学生是男孩。

class Student extends Model
{    
public function grades()
    {
        return $this->hasMany('App\Grade');
    }
}

class Grade extends Model
{
    public function student()
    {
        return $this->belongsTo('App\Student');
    }
}

所以,我尝试了这段代码,但它是错误的,因为如果我们有一个学生,而不是一些学生,它就可以工作:

$grades = Student::where('sex','male')->grades->latest('created_at')->paginate(20);

我正在寻找解决方案!

标签: laraveleloquent

解决方案


是的,关系方法可以被一个雄辩的人调用。

所以你只想得到男学生的成绩记录,你可以把他们从Grade中拿出来。

$grades = Grade::whereHas('student', function($q) { 
    return $q->where('sex', 'male');
})->latest('created_at')->paginate(20);

推荐阅读