Maison > développement back-end > tutoriel php > Comment commander des modèles associés dans Laravel à l'aide de « orderBy » ?

Comment commander des modèles associés dans Laravel à l'aide de « orderBy » ?

Mary-Kate Olsen
Libérer: 2024-11-29 06:11:10
original
614 Les gens l'ont consulté

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

Ordre des relations dans Laravel

Lors de la récupération d'un ensemble de modèles associés, il est souvent utile de les classer d'une manière spécifique. Dans Laravel, cela peut être réalisé en utilisant la méthode orderBy.

Ordering HasMany Relations

Considérez le scénario suivant dans lequel vous parcourez tous les commentaires publiés par l'auteur d'un article particulier :

foreach($post->user->comments as $comment) {
    echo "<li>" . $comment->title . " (" . $comment->post->id . ")</li>";
}
Copier après la connexion

Ce code affichera la liste de commentaires suivante :

I love this post (3)
This is a comment (5)
This is the second Comment (3)
Copier après la connexion

Pour trier les commentaires par post ID, étendez la relation hasMany dans le modèle User :

public function comments()
{
    return $this->hasMany('Comment')->orderBy('column');
}
Copier après la connexion

Remplacez la colonne par le nom de la colonne par laquelle vous souhaitez trier. Dans ce cas, nous utiliserons id :

public function comments()
{
    return $this->hasMany('Comment')->orderBy('id');
}
Copier après la connexion

Cela mettra à jour l'ordre des commentaires pour être :

I love this post (3)
This is the second Comment (3)
This is a comment (5)
Copier après la connexion

Ordre avec les paramètres de requête

Dans En plus de coder en dur l'ordre dans la relation, vous pouvez également trier en fonction d'un paramètre de requête. Pour cela, définissez une route dans votre fichier routes.php :

Route::get('users/{user}/comments', 'UserController@index');
Copier après la connexion

Puis créez une méthode d'index correspondante dans votre UserController :

public function index($user)
{
    $column = Input::get('orderBy', 'defaultColumn');
    $comments = $user->comments()->orderBy($column)->get();

    // ...
}
Copier après la connexion

Lorsque vous visitez la route avec un paramètre orderBy, les commentaires seront classés en conséquence. Par exemple, visiter l'URL suivante classerait les commentaires par colonne create_at :

http://localhost/users/1/comments?orderBy=created_at
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal