Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich eloquente Beziehungen in Laravel bestellen?

Wie kann ich eloquente Beziehungen in Laravel bestellen?

DDD
DDDOriginal
2024-11-24 05:02:09539Durchsuche

How Can I Order Eloquent Relationships in Laravel?

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!

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