Задача типовая: организовать "службу друзей" - зафрендить, отфрендить, вывести список и пр. Здесь:
Как правильно в Laravel сделать отношения многие-ко-многим модели самой к себе? jazzus предложил годное решение:
Делаем hasMany с User на таблицу друзей юзера
public function friends(){
return $this->hasMany('App\Models\Friend, 'user_id', 'id');
}
В этой таблице сделать 2 ид:
Кто добавляет в друзья (Auth:id()) поле user_id
Кого юзер добавляет в друзья - поле friend_id
В итоге методом create делаем запись при добавлении в друзья. Если юзера добавляют в друзья – аналогично.
получаем
$user->friends()->get()
$user->friends()->find($id)
Однако мне непонятно вот что:
- А если мне надо получить список юзеров У которых я в друзьях - тогда что?
Т.е. типовые операции здесь:
- Добавить в друзья
- Убрать из друзей
- Вывести список друзей
- Вывести список "в друзьях у"
Вот с последним пунктом я не понимаю.
И еще - если я хочу сделать "мягкое" удаление из друзей - это флаг во вторую таблицу, так?
Спасибо.