Laravel: Как скрыть собственный профиль пользователя из списка друзей? - PullRequest
0 голосов
/ 15 ноября 2018

Существует три таблицы: пользователи, профили, friend_request

столбец таблицы профилей: profile_id, id (внешний ключ с пользователями), first_name, last_name

столбец таблицы friend_request: request_id, sender_id, to_user_id, request_status

логика: если profile_id существует либо в sender_id столбце, либо to_user_id из friend_request таблица с request_status 2, тогда они друзья.

пример: sender_id to_user_id request_status

           5          6            2

$request_accept = DB::table('friend_request')->select('profiles.profile_id','profiles.first_name',
'friend_request.request_id')->leftjoin('profiles', function($join)
 {
   $join->on('friend_request.sender_id' , '=','profiles.profile_id');
   $join->orOn('friend_request.to_user_id' , '=','profiles.profile_id');
  }
 )->where('to_user_id',$my_profile_id)->orwhere('sender_id',$my_profile_id)->where('interest_status','2')->whereNotIn('profiles.profile_id', function($q) use ($my_profile_id)
  {
   $q->select('profile_id')->from('profiles')->where('profile_id',$my_profile_id);
   })->groupby('profiles.profile_id')->get(); 

wherenotinне работает.

1 Ответ

0 голосов
/ 15 ноября 2018

Если я понимаю, что вы спрашиваете ...

Вероятно, лучше сделать все эти модели со связями, тогда вы могли бы сделать гораздо более простой запрос, например, вот так.

Предположим, ваша таблица friend_request теперь имеет модель FriendRequest с отношением user. В приведенном ниже запросе используется $userId, предположим, что это идентификатор пользователя, которому вы хотите получить все запросы на добавление в друзья.

FriendRequest::where('to_user_id', $my_profile_id)->get();

Если все настроено правильно, пользователь не будет возвращен, поскольку он не может отправить себе запрос на добавление в друзья.

...