laravel8 查询登录用户的好友

192 阅读1分钟

思路:获取登录用户的id,通过用户的id来查询好友表中的该用户所有的好友id,通过查到的好友id再次查询关系表查询你是否是对方的好友,如果双方都是好友则就是好友,将id放入到一个数组中,通过好友id来查(whereIn)询用户表中的用户头像和昵称

/**
 * @param Request $request
 * @return array
 * 好友列表
 */
public function index(Request $request)
{
    //获取用户id
    $token = $request->header('token');
    $user_id = (new TokenServe())->checkToken($token);
    //查询该用户的好友
    $userData = FriendList::where('user_id',$user_id)->get();
    $friends_id = $userData->pluck('friend_id')->toArray();
    //将对方是你好友 并且判断你是否是对方好友
    $friendData = FriendList::whereIn('user_id',$friends_id)->get();
    $user_friends_id = [];
    //如果是加入到数组中
    foreach ($friendData as $k => $v)
    {
        if ($v->friend_id == $user_id){
            array_push($user_friends_id,$v->user_id);
        }
    }
    //关联user表查询
    $friendData = FriendList::with('user')
        ->whereIn('user_id',$user_friends_id)
        ->where('friend_id',$user_id)
        ->get()->pluck('user')->toArray();
    $data = [];
    //数据处理
    foreach ($friendData as $k => $v)
    {
        array_push($data,[
            'avatar_url' => $v['avatar_url'],
            'nickname' => $v['nickname']
        ]);
    }
    return ['code'=>200,'msg'=>'查询成功','data'=>$data];
}