Heim > Fragen und Antworten > Hauptteil
Ich habe ein Szenario, in dem ich Benutzer finden möchte, die Benutzer X folgen und Benutzer X ihnen folgt.
Sehen Sie sich die Architektur unten an: Datenbanktabelle mit Testwerten
Wir haben follower_id und Following_id, Nehmen wir nun an, wir möchten überprüfen, ob der Benutzer mit der ID 23 jemandem folgt und ob er ihm auch folgt.
Wie Sie sehen können, folgt Benutzer 22 Benutzer 23, Daher möchten wir die Details von Benutzer 22 wie Name und E-Mail aus der Benutzertabelle abrufen.
Benutzer 23 folgt 24, aber Benutzer 24 folgt nicht Benutzer 23, daher werden wir Benutzer 24 nicht in die Liste aufnehmen.
Bitte helfen Sie mir, die Abfrage zu schreiben, um die Benutzerliste für das obige Szenario zu erhalten. Danke
Aktualisiert
Weil ich weitere Informationen über den Benutzer benötige. Ich implementieren derzeit eine langsame Lösung in 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 |
---|---|---|
7 | 22 | 23 |
6 | 23 | 22 |