В ларке еще не придумали ничего для двусторонних отношений?)
Есть так скажем система друзей - таблица с пользователями и есть pivot таблица с полями user_id и friend_id.
Нужно вывести список друзей так, чтобы при добавлении в друзья это происходило как для одного, так и для другого пользователя.
С точно такой же проблемой сталкивался года три назад, приходилось в базе делать две записи, чтобы отношение отрабатывало как полагается, но решение такое себе и не оптимально с точки зрения структуры данных))
PS: сейчас это выглядит так и возвращает список друзей для того, КТО собственно добавлял в друзья (принял запрос дружбы), при этом для того, КОГО добавили в друзья список друзей без первого человека, то есть по факту какая-то единоличная дружба ))
public function friends()
{
return $this->belongsToMany(User::class, 'user_friends', 'friend_id', 'user_id')
->wherePivot('accepted', true);
}