雄辩:如何得到一个模型,其中一个条件的相关模型的数量正好是n?
以下是我所面临的问题的简化: -
数据库中有多个课程。一门课程有很多学生。
我需要为20名女学生开设课程。所以,我需要做两件事。检查学生人数是否为20.并检查他们是女性的情况。
现在我可以使用“wherehas”,这不会让我算上相关的学生。事实上,它只检查是否至少有一名女学生。
Course
::whereHas('students',function($q){
$q->where('gender','Female');
})
->get()
;
或者我可以使用“has”来让我计算相关的学生但是不让我检查他们是否是女性。
Course
::has('students','=','20')
->get()
;
我需要一些能让我检查学生数量并检查他们都是女性的东西。需要这样的东西: -
// NOT ALLOWED IN ELOQUENT
Course
::has('students','=','20',function($q){
$q->where('gender','Female');
})
->get()
;
该怎么办?
根据Eloquent Relationships文档,您可以执行以下操作:
Course
::whereHas('students',function($q){
$q->where('gender','Female');
}, '=', 20)
->get()