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!