SQL-Abfrage, um Benutzer zu ermitteln, denen jemand folgt und die dieser Person folgen
P粉562845941
P粉562845941 2024-03-29 22:20:07
0
1
289

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粉562845941
P粉562845941

Antworte allen(1)
P粉356128676
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!