Heim > Backend-Entwicklung > PHP-Tutorial > Wie bestelle ich verwandte Modelle in Laravel mit „orderBy'?

Wie bestelle ich verwandte Modelle in Laravel mit „orderBy'?

Mary-Kate Olsen
Freigeben: 2024-11-29 06:11:10
Original
614 Leute haben es durchsucht

How to Order Related Models in Laravel Using `orderBy`?

Beziehungen in Laravel anordnen

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.

Ordering HasMany Relationships

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>";
}
Nach dem Login kopieren

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)
Nach dem Login kopieren

Um die Kommentare zu bestellen Erweitern Sie nach Post-ID die hasMany-Beziehung im Benutzermodell:

public function comments()
{
    return $this->hasMany('Comment')->orderBy('column');
}
Nach dem Login kopieren

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');
}
Nach dem Login kopieren

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)
Nach dem Login kopieren

Reihenfolge mit Abfrageparametern

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');
Nach dem Login kopieren

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();

    // ...
}
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage