Laravel:如何从好友列表中隐藏用户自己的个人资料?

时间:2018-11-15 12:39:09

标签: laravel query-builder laravel-query-builder

共有三个表格:用户,个人资料,friend_request

个人资料表的列: profile_id,id(用户的外键),first_name,last_name

friend_request的表格列: request_id,sender_id,to_user_id,request_status

逻辑:如果 profile_id 存在于 friend_request 表的 sender_id 列或 to_user_id 中,且具有 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 :(得分:1)

如果我了解您的要求...

使用关系建立所有这些模型可能更好,那么您可以进行一个简单得多的查询,例如这样。

假设您的friend_request表现在具有具有FriendRequest关系的user模型。下面的查询使用$userId,假设这是您希望获得所有好友请求的用户的ID。

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

如果一切设置正确,将无法返回用户,因为他们无法向自己发送朋友请求。