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
Mary-Kate OlsenOriginal
2024-11-29 06:11:10708Durchsuche

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>";
}

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)

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

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!

Stellungnahme:
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