В красноречивом выражении: как связать модель, в которой количество связанных моделей с условием равно n?
Здесь приведено упрощение проблемы, с которой я сталкиваюсь: -
В базе данных есть несколько курсов.В одном курсе много студентов.
Мне нужно пройти курсы с ровно 20 студентками.Итак, мне нужно сделать оба.Убедитесь, что количество студентов равно 20. И проверьте, что они являются женщинами.
Теперь я могу использовать либо «где», что не позволяет мне подсчитывать связанных студентов.На самом деле он только проверяет, есть ли хотя бы одна студентка.
Course
::whereHas('students',function($q){
$q->where('gender','Female');
})
->get()
;
Или я могу использовать «имеет», что позволяет мне подсчитывать связанных студентов, но не позволяет мне проверять, являются ли они студентками или нет.
Course
::has('students','=','20')
->get()
;
Мне нужно что-то, что позволило бы мне как проверить количество учеников, так и проверить, что все они женщины.Нужно что-то вроде этого: -
// NOT ALLOWED IN ELOQUENT
Course
::has('students','=','20',function($q){
$q->where('gender','Female');
})
->get()
;
Что делать?