Laravel: Sortierung nach Anzahl der Beziehungen
In diesem Fall möchten Sie Hackathons sortiert nach der Anzahl der damit verbundenen Teilnehmer finden. Die bereitgestellte Tabellenstruktur und die Modelldefinitionen ergeben ein klares relationales Schema.
Der erste Versuch, das in der Frage erwähnte Ergebnis zu erhalten, wies einige Mängel auf. Erstens wird das Abrufen der Anzahl verwandter Modelle mit „find“ nicht empfohlen, da dadurch die Beziehung schnell geladen wird, was bei großen Datensätzen ineffizient sein kann. Zweitens ist die in der Abfrage referenzierte $this->id falsch, da sie sich auf die Modellinstanz bezieht, die zur Erstellung der Abfrage verwendet wurde, und nicht auf die ID des Hackathons.
Um die gewünschte Reihenfolge zu erreichen, verwenden Sie den folgenden Ansatz mit Laravel Eager Loading und benannte Beziehungen aus 5.3 können verwendet werden:
Hackathon::withCount('participants') ->orderBy('participants_count', 'desc') ->paginate(10);
Durch die Verwendung von withCount wird die Anzahl der zugehörigen Teilnehmer eifrig in die Abfrage geladen und so effizient ermittelt die Zählung ohne zusätzliche Datenbankabfragen. Die orderBy-Klausel sortiert dann die Ergebnisse in absteigender Reihenfolge basierend auf dem Attribut „members_count“ und stellt so effektiv die beliebtesten Hackathons basierend auf der Anzahl der Teilnehmer bereit.
Das obige ist der detaillierte Inhalt vonWie bestelle ich Laravel-Hackathons nach Teilnehmerzahl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!