Laravel: Beziehungen mit orderBy ordnen
Bei der Arbeit mit Beziehungen in Laravel kann es nützlich sein, die Ergebnisse auf eine bestimmte Weise zu ordnen. Beispielsweise möchten Sie möglicherweise mit einem Beitrag verknüpfte Kommentare in chronologischer Reihenfolge anzeigen.
Betrachten Sie die folgende Schleife, die alle vom Autor eines bestimmten Beitrags geposteten Kommentare durchläuft:
foreach($post->user->comments as $comment) { echo "<li>" . $comment->title . " (" . $comment->post->id . ")</li>"; }
Diese Schleife kann eine Ausgabe erzeugen wie:
I love this post (3) This is a comment (5) This is the second Comment (3)
Um die Liste nach post_id zu ordnen, können Sie die Kommentarbeziehung mit orderBy erweitern Funktion:
public function comments() { return $this->hasMany('Comment')->orderBy('column'); }
Wenn Sie nun die Kommentare durchlaufen, werden sie in der gewünschten Reihenfolge angezeigt:
This is the second Comment (3) I love this post (3) This is a comment (5)
Alternativ können Sie die flexiblere Methode verwenden orderBy-Funktion als Eingabe, ähnlich dem Input::get()-Eingabeprüfungsbeispiel:
class User { public function comments() { return $this->hasMany('Comment'); } } class Controller { public function index() { $column = Input::get('orderBy', 'defaultColumn'); $comments = User::find(1)->comments()->orderBy($column)->get(); // use $comments in the template } }
Indem Sie die orderBy-Spalte als Eingabe übergeben, können Sie dynamisch bestellen Die Kommentare basieren auf Benutzereingaben. Denken Sie daran, aus Sicherheitsgründen eine ordnungsgemäße Eingabeprüfung durchzuführen.
Das obige ist der detaillierte Inhalt vonWie kann ich eloquente Beziehungen in Laravel bestellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!