代码之家  ›  专栏  ›  技术社区  ›  Hey

Laravel:如何根据关系列进行排序

  •  0
  • Hey  · 技术社区  · 2 年前

    我们有 Student 模型学生模型 hasMany 与的关系 Grade 模型

    以下是列:

    学生id、级别、姓名、状态

    等级-id,student_id,科目,等级,状态

    基本上,我想做的是查询所有参加考试的一级学生 math1 主题和 sort 它有等级

    这是我迄今为止的代码:

    $r = Student::where("level", 1)
               ->whereRelation('grades', 'subject', 'math1')
               ->get();
    

    这适用于过滤数学1科目的一级学生,但我的问题是如何根据relatoship进行排序 grade

    提前谢谢。

    1 回复  |  直到 2 年前
        1
  •  2
  •   Lupinity Labs    2 年前

    我的第一个想法是,如果你的主要兴趣是成绩,我会扭转这种局面。当您知道要列出参加 math1 同学们,你们可以这样做:

    Grade::with('Student')
        ->whereSubject('math1')
        ->whereHas('Student', fn($query) => $query->whereLevel(1))
        ->orderBy('grade')
        ->get();