Laravel Eloquent: Wie, um die Ergebnisse der zugehörigen Modelle?
Ich habe ein Modell namens Schule und es hat viele Studenten .
Hier ist der code, der in meinem Modell:
public function students()
{
return $this->hasMany('Student');
}
Bin ich immer alle Schüler mit diesem code in meinen controller:
$school = School::find($schoolId);
und in der Ansicht:
@foreach ($school->students as $student)
Nun möchte ich, um die Studenten von einigen Feld in der students
Tabelle. Wie kann ich das tun?
orderBy es beeinflussen würde die Abfrage auf die
schools
Tisch, nicht students
, und offensichtlich würde einen Fehler auslösen, es sei denn, Sie join der Tabellen.InformationsquelleAutor Debiprasad | 2014-09-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie ein paar Möglichkeiten, dies zu erreichen:
$school->students->sortBy('whateverProperty')->sortBy('anotherProperty');
funktioniert nicht. Es werden nur Arten, die Sammlung durch 'anotherProperty'.Hier ist eine Lösung, die funktioniert. Es verwendet die Schließung. stackoverflow.com/a/25451441/225790
Ja, Mark Baker ' s verlinkte Lösung ist ordentlich. Eine andere Lösung wäre
usort
.Was über viele zu-eins-Beziehung?
nicht sinnvoll zu Sortieren Verwandte Modelle, also was ist deine Frage eigentlich?
InformationsquelleAutor Jarek Tkaczyk
können Sie hinzufügen orderBy zu Ihrem Verhältnis, so dass die einzige Sache, die Sie ändern müssen, ist
zu
InformationsquelleAutor fico7489
Antwort auf die ursprüngliche Frage, die
students
dynamische Eigenschaft kann auch Sie zugegriffen werden wie eine Beziehung-Methode.So haben Sie diese zu Holen alle Schüler:
Nun als eine Beziehung, die Methode, dies entspricht:
Gegeben dies, Sie können nun fügen Sie in einigen der Bestellung:
Da beredt wird die Durchführung einer beitreten, stellen Sie sicher, dass Sie den Namen der Tabelle als Verweis auf die Spalte zu bestellen.
Können Sie auch fügen Sie diese zu Ihrem
students
Methode, wenn Sie möchten, legen Sie eine Standard-Bestellung, die$school->students
immer wieder. Schauen Sie sich die Dokumentation fürhasMany()
zu sehen, wie dies funktioniert.InformationsquelleAutor Jason