Maison >développement back-end >tutoriel php >Comment puis-je commander des relations éloquentes dans Laravel ?

Comment puis-je commander des relations éloquentes dans Laravel ?

DDD
DDDoriginal
2024-11-24 05:02:09564parcourir

How Can I Order Eloquent Relationships in Laravel?

Laravel : Ordre des relations avec orderBy

Lorsque vous travaillez avec des relations dans Laravel, il peut être utile d'ordonner les résultats d'une manière particulière. Par exemple, vous souhaiterez peut-être afficher les commentaires associés à une publication par ordre chronologique.

Considérez la boucle suivante, qui parcourt tous les commentaires publiés par l'auteur d'une publication spécifique :

foreach($post->user->comments as $comment)
{
    echo "<li>" . $comment->title . " (" . $comment->post->id . ")</li>";
}

Cette boucle peut produire une sortie telle que :

I love this post (3)
This is a comment (5)
This is the second Comment (3)

Pour trier la liste par post_id, vous pouvez étendre la relation des commentaires avec orderBy fonction :

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

Maintenant, lorsque vous parcourez les commentaires, ils seront affichés dans l'ordre souhaité :

This is the second Comment (3)
I love this post (3)
This is a comment (5)

Vous pouvez également utiliser la méthode plus flexible d'utilisation du Fonction orderBy en entrée, similaire à l'exemple de vérification d'entrée Input::get() :

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

En passant la colonne orderBy en entrée, vous pouvez ordonner dynamiquement les commentaires en fonction des entrées de l'utilisateur. N'oubliez pas de mettre en œuvre une vérification appropriée des entrées pour des raisons de sécurité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn