Maison > Questions et réponses > le corps du texte
J'ai un scénario dans lequel je souhaite trouver des utilisateurs qui suivent l'utilisateur X et l'utilisateur X les suit.
Voir l'architecture ci-dessous : Table de base de données avec valeurs de test
Nous avons follower_id et follow_id, Supposons maintenant que nous voulions vérifier si l'utilisateur avec l'identifiant 23 suit quelqu'un et s'il le suit également.
Comme vous pouvez le voir, l'utilisateur 22 suit l'utilisateur 23, Nous voulons donc obtenir les détails de l'utilisateur 22, comme le nom et l'adresse e-mail, à partir de la table utilisateur.
L'utilisateur 23 suit 24, mais l'utilisateur 24 ne suit pas l'utilisateur 23, nous n'inclurons donc pas l'utilisateur 24 dans la liste.
Veuillez m'aider à rédiger la requête pour obtenir la liste des utilisateurs pour le scénario ci-dessus. Merci
Mise à jour
Parce que j'ai besoin de plus d'informations sur l'utilisateur. J'implémente actuellement une solution lente dans Laravel.
$UsersIAmFollowing = UserFollowing::where('follower_id', $user->id)->get(); $UsersFollowingMe = UserFollowing::where('following_id', $user->id)->get(); $friends = []; foreach ($UsersIAmFollowing as $userIamFollowing) { foreach ($UsersFollowingMe as $userFollowingMe) { if($userIamFollowing->following_id == $userFollowingMe->follower_id){ array_push($friends, User::find($userIamFollowing->following_id)); } } } dd($friends);
P粉3561286762024-03-30 15:18:57
select t.id ,t.follower_id ,t.following_id from t join t t2 on t2.following_id = t.follower_id and t.following_id = t2.follower_id
id | follow_id | ID_suivant |
---|---|---|
7 | 22 | 23 |
6 | 23 | 22 |