Исходя из вашего запроса, я предполагаю, что у вас есть Many to Many
отношение между Internship
и Student
.Исходя из этого, ваши модели должны выглядеть следующим образом:
Модель стажировки :
public function students() {
return $this->belongsToMany('App\Student')->withPivot('attendance');
}
Модель студента :
public function internships() {
return $this->belongsToMany('App\Internship')->withPivot('attendance');
}
При этом вы должны иметь возможность звонить с красноречивыми моделями:
count($internship->students()->where('attendance', '=', 1)->get());
ИЛИ, используя Mutator, вы можете создать собственный атрибут для получения количества посещений:
public function getRealAssistantsAttribute() {
return $this->students()->where('attendance', '=', 1)->get();
}
//On an Internship instance
count($internship->real_assistants);
РЕДАКТИРОВАТЬ :
Один из последних способов использования Eager Загрузка будет выглядеть примерно так:
$internships = Internship::withCount([
'students as real_attendants' => function($query) {
$query->where('attendance', '=', 1);
}
])->get();
Вы можете получить к нему доступ, используя:
$internships[0]->real_attendants_count;