2016-11-10 9 views
0

Ich habe eine einfache Tabelle auf einer Seite, die eine paginierte Liste von Baseball-Spielen ausgibt. Es zeigt das Spieldatum, die lokalen und Gastmannschaften und die Stadt. Ich habe drei redegewandte Modelle (Spiel, Team und Stadt), alle Beziehungen funktionieren und alles ist gut. Ich liebe es, $game->localTeam->city->fullName (ein Mutator, der die Stadt und den Staat kombiniert) zu tun. Die Daten stammen aus der folgenden Abfrage: Game::with('teamHome', 'teamVisitor', 'teamHome.city'). Ich möchte nach jeder Spalte sortieren können. Aber wenn ich ->orderBy() für die Abfrage verwende, können nur die Ergebnisse aus der Spieltabelle sortiert werden. Ich finde keine Möglichkeit, das Team oder die Stadt zu sortieren. Nach dem, was ich gelesen habe, müsste ich eine Fluent-Abfrage durchführen und alle meine Tabellen verbinden. Aber dann hätte ich ein Array von stdClass-Objekten und wäre nicht in der Lage, in meinen Eloquent-Beziehungen zu navigieren und den oben beschriebenen fullName-Mutator zu verwenden.Sortiert nach Eloquent

Dieses Szenario scheint so einfach zu sein, muss es eine elegante Art und Weise, dies zu tun?

+0

Kann man das nicht machen wie $ game-> localTeam-> sortBy ('name') und $ game-> localTeam-> city-> sortyBy ('name')? (Angenommen, Team und Stadt haben Namenseigenschaften) –

Antwort

0

Sie können.Methode nach ->get() verwenden. Dies wird die Sammlung erhalten und dann sortieren.

Andernfalls können Sie eine RAW-Abfrage ausführen, aber Sie verlieren die fließende Syntax.

+0

Ja, aber das würde nur die Ergebnisse von dieser paginierten Seite sortieren, richtig? – kag

+0

Sie haben Recht! Vielleicht haben Sie mit einem Query Builder zu tun, wie Sie gesagt haben. Von Laravel 5.3 gibt es eine Sammlung zurück – kanashin