Отношения для братьев и сестер - это много для многих отношений. Так, многие ко многим себе отношения, мы можем определить две функции в модели:Laravel Eloquent Отношения для братьев и сестер
public function siblings()
{
return $this->belongsToMany('Student', 'student_sibling', 'student_id', 'sibling_id');
}
public function siblingOf()
{
return $this->belongsToMany('Student', 'student_sibling', 'sibling_id', 'student_id');
}
Первый возвращает студентов, которые являются братьями и сестрами студента. Обратное также верно для братьев и сестер. Итак, второй возвращает учеников, из которых студент является братом.
Итак, мы можем объединить обе коллекции, чтобы получить список студентов, которые являются братьями и сестрами ученика. Вот мой код в методе контроллера:
$siblingOf = $student->siblingOf;
$siblings = $student->siblings;
$siblings = $siblings->merge($siblingOf);
Но есть еще. Отношение братьев и сестер является цепным отношением в отличие от отношений друзей. Это означает, что если X является родственным братом Y, а Y является родственным братом Z, то Z является братом X.
Итак, как получить коллекцию всех учеников, которые являются братьями и сестрами?
Так что это больше похоже на '' relative' не sibling', верно? Насколько глубоким вы хотели бы быть?Имейте в виду, что это может стать чем-то вроде «каждый ученик - это все родственники в некотором смысле». –