Beim Abrufen einer Reihe verwandter Modelle ist es oft nützlich, diese auf eine bestimmte Weise zu ordnen. In Laravel kann dies mit der Methode „orderBy“ erreicht werden.
Stellen Sie sich das folgende Szenario vor, in dem Sie alle vom Autor eines bestimmten Beitrags geposteten Kommentare durchlaufen:
foreach($post->user->comments as $comment) { echo "<li>" . $comment->title . " (" . $comment->post->id . ")</li>"; }
Dieser Code zeigt die folgende Liste von Kommentaren an:
I love this post (3) This is a comment (5) This is the second Comment (3)
Um die Kommentare zu bestellen Erweitern Sie nach Post-ID die hasMany-Beziehung im Benutzermodell:
public function comments() { return $this->hasMany('Comment')->orderBy('column'); }
Ersetzen Sie die Spalte durch den Namen der Spalte, nach der Sie sortieren möchten. In diesem Fall verwenden wir die ID:
public function comments() { return $this->hasMany('Comment')->orderBy('id'); }
Dadurch wird die Reihenfolge der Kommentare wie folgt aktualisiert:
I love this post (3) This is the second Comment (3) This is a comment (5)
In Zusätzlich zur festen Codierung der Reihenfolge in der Beziehung können Sie die Reihenfolge auch auf der Grundlage eines Abfrageparameters festlegen. Definieren Sie dazu eine Route in Ihrer Routes.php-Datei:
Route::get('users/{user}/comments', 'UserController@index');
Und erstellen Sie dann eine entsprechende Indexmethode in Ihrem UserController:
public function index($user) { $column = Input::get('orderBy', 'defaultColumn'); $comments = $user->comments()->orderBy($column)->get(); // ... }
Wenn Sie die Route mit a besuchen orderBy-Parameter werden die Kommentare entsprechend sortiert. Wenn Sie beispielsweise die folgende URL besuchen, werden die Kommentare nach der Spalte „created_at“ sortiert:
http://localhost/users/1/comments?orderBy=created_at
Das obige ist der detaillierte Inhalt vonWie bestelle ich verwandte Modelle in Laravel mit „orderBy'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!