Datenbankergebnisse nach der Anzahl verwandter Datensätze in einer Viele-zu-Viele-Beziehung zu ordnen, kann eine komplexe Aufgabe sein. Lassen Sie uns eine Lösung für ein solches Szenario untersuchen.
Betrachten Sie das folgende Datenbankschema:
hackathons id name ... hackathon_user hackathon_id user_id users id name
Um die beliebtesten Hackathons basierend auf der Anzahl der Teilnehmer abzurufen, müssen wir eine Join-Abfrage verwenden und gruppieren Sie die Ergebnisse nach Hackathon-ID und zählen Sie die Anzahl der Teilnehmer für jeden Hackathon. Dies kann mit der folgenden Abfrage erreicht werden:
$hackathons = DB::table('hackathons') ->join('hackathon_user', 'hackathon_user.hackathon_id', '=', 'hackathons.id') ->groupBy('hackathon_user.hackathon_id') ->select('hackathons.id', 'hackathons.name', DB::raw('COUNT(*) as participant_count')) ->orderBy('participant_count', 'desc') ->get();
Diese Abfrage ruft die Hackathons sortiert nach Teilnehmerzahl ab, wobei der beliebteste Hackathon zuerst aufgeführt wird.
Alternativ bei Verwendung von Laravel's Eloquent ORM können Sie den folgenden Ansatz verwenden:
Hackathon::withCount('participants')->orderBy('participants_count', 'desc')->get();
Dieser Ansatz ist bequemer und unkomplizierter, aber er basiert auf Eloquents withCount()-Methode, die in älteren Versionen von Laravel möglicherweise nicht verfügbar ist.
Das obige ist der detaillierte Inhalt vonWie ordne ich Laravel-Ergebnisse nach Beziehungsanzahl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!