【问题标题】:Eloquent: Find all records of a table base on a one to many relationshipEloquent:基于一对多关系查找表的所有记录
【发布时间】:2019-12-20 15:47:30
【问题描述】:

我有两张表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);

我正在寻找解决方案!

【问题讨论】:

    标签: laravel eloquent


    【解决方案1】:

    是的,关系方法一个人就可以调用。

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

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

    【讨论】:

      【解决方案2】:

      试试这个

      public function grades()
      {
         return $this->hasMany('App\Grade','student_id','student_id');
      }
      
      $grades = Student::with('grades')->where('sex','male')->latest('created_at')->paginate(20);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-08-04
        • 1970-01-01
        • 1970-01-01
        • 2020-05-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-15
        相关资源
        最近更新 更多