雄辩的:如何获得一个具有条件的相关模型的个数正好为n的模型?

时间:2019-03-07 20:02:29

标签: laravel count eloquent one-to-many wherehas

雄辩地讲:如何获得一个条件下相关模型的数量恰好为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()
;

该怎么办?

1 个答案:

答案 0 :(得分:4)

根据Eloquent Relationships文档,您可以执行以下操作:

Course
    ::whereHas('students',function($q){
        $q->where('gender','Female');
    }, '=', 20)
    ->get()