php*_*php 5 laravel eloquent laravel-8
我有一个带有“配额”列的教室表,该列具有不同的值。在一个班级,有很多学生。如何以where每个学生总数的条件显示教室数据row < "quota"?这是表:
.
代码 :
Classroom::with('subject.teacher')->with('students')->whereHas('subject', fn ($query) => $query->where('grade', $grade))->withCount('students')->having('students_count', '<', 'quota');
Run Code Online (Sandbox Code Playgroud)
当我使用此代码时,结果为空
想要的结果只显示 3 个教室
该withCount函数会向您的查询附加一个额外的选择列。它不使用GROUP BY通常与 结合使用的which having。
您实际上无法按选择中添加的子查询进行过滤。然而幸运的是 Laravel 允许您根据使用的相关模型的数量来选择行has。此查询也作为子查询添加,但在 where 子句中,因此您也可以在其中使用列名称,如下所示:
Classroom::with('subject.teacher')
->with('students')
->whereHas('subject', fn ($query) => $query->where('grade', $grade))
->has('students', '<', \DB::raw('quota'))
->withCount('students');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
81 次 |
| 最近记录: |