У меня такая ситуация: модели Parent
и Student
находятся во многих отношениях, каждая из них belongsTo()
модель User
.Branch
имеет много от Student
до User
(hasManyThrough(Student::class, User::class);
).Мне нужно установить такие отношения с Parent
также: hasManyThrough(Parent::class, User::class);
Но проблема в том, что branch_id
в users
таблице можно обнулять для родителей.Поэтому я не могу забрать родителей под ветку.Я должен забрать тех родителей, ученики которых находятся в текущем отделении.Как я могу получить у Branch
много Parent
с через Student
с Branch
?
Вот некоторые из моих неудачных попыток решить эту проблему.в методе parents()
в Branch.php
:
return \App\Parent::has('students.user.branch', $this)->get();
Не работает.Я знаю, что это не должно работать.Далее:
return \App\Parent::whereHas('students', function($query){
$query->where() // stuck here. something could have been done here
})->get();
Я даже пытался отфильтровать коллекцию родителей, но, к сожалению, возвращался только первый родитель в коллекции:
return \App\Parent::all()->filter(function($parent){
foreach($this->students as $student){
foreach($student->parents as $currentParent){
return $parent->id == $currentParent->id;
}
}
});