друзья создается запись
1 | 50
когда пользователь с идентификатром 50 подтверждает заявку в друзья - создается запись
50 | 1
Короче взаимодобавление в друзья.
И вот теперь надо например получить запросом всех друзей пользователя 1.
Я делаю тупо перебором
function friends() {
// Получить мои подписки
$myFollows = $this->follows()->where('accepted', true)->get();
// Получить моих подписчиков
$myFollowers = $this->followers()->where('accepted', true)->get();
$friends = [];
// Найти обоюдные заявки
foreach ($myFollows as $myFollow) {
foreach ($myFollowers as $myFollower) {
if($myFollow->from_user_id == $myFollower->to_user_id) {
// все по обоюдному согласию
$friends []= $myFollow;
break;
}
}
}
usort($friends, function($a,$b) {
return $a->updated_at < $b->updated_at;
});
foreach ($friends as &$friend) {
$friend = $friend->to->profile();
}
return $friends;
}
Можно ли на это дело написать один запрос?..
У тебя должна быть таблица заявок и таблица друзей
Обсуждают сегодня