273 votes

Laravel Eloquent : Ordonner les résultats de all()

Je suis bloqué sur une tâche simple. J'ai juste besoin d'ordonner les résultats provenant de cet appel

$results = Project::all();

Project est un modèle. J'ai essayé ceci

$results = Project::all()->orderBy("name");

Mais cela n'a pas fonctionné. Quelle est la meilleure façon d'obtenir toutes les données d'un tableau et de les ordonner ?

480voto

Travis B Points 4900

Vous pouvez le faire à l'intérieur de la requête.

$results = Project::orderBy('name')->get();

Cela renverra tous les résultats dans l'ordre approprié.

145voto

Yannick Y Points 1811

Vous pouvez toujours utiliser sortBy (au niveau de la collection) au lieu de orderBy (au niveau de la requête) si vous voulez toujours utiliser all() puisqu'il renvoie une collection d'objets.

Ordre croissant

$results = Project::all()->sortBy("name");

Ordre décroissant

$results = Project::all()->sortByDesc("name");

Pour plus de détails, consultez la documentation sur les collections.

https://laravel.com/docs/5.1/collections

46voto

kehinde Points 87

En outre, pour étayer les réponses précédentes, il peut également être trié par ordre décroissant. desc ou ascendante asc en ajoutant l'un ou l'autre en tant que deuxième paramètre.

$results = Project::orderBy('created_at', 'desc')->get();

23voto

doncadavona Points 1621

FAITES-LE :

$results = Project::orderBy('name')->get();

Pourquoi ? Parce que c'est rapide ! La commande est effectuée dans la base de données.

NE FAITES PAS CELA :

$results = Project::all()->sortBy('name');

Pourquoi ? Parce que c'est lent . Tout d'abord, les lignes sont chargées depuis la base de données, puis chargées dans la classe Collection de Laravel, et enfin, classées en mémoire.

18voto

Seb Points 16

Mise à jour 2017


Laravel 5.4 a ajouté les méthodes orderByDesc() au constructeur de requêtes :

$results = Project::orderByDesc('name')->get();

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X