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 ?

0voto

Amin.Qarabaqi Points 155

Il est intéressant de noter qu'il est possible de passer plusieurs commandes :

selon laravel docs :

DB::table('users')
   ->orderBy('priority', 'desc')
   ->orderBy('email', 'asc')
   ->get();

cela signifie que laravel triera les résultats en fonction de priority Lorsque c'est fait, le résultat sera ordonné avec le même attribut priority sur la base de email en interne.

EDIT :

Comme l'a dit @HedayatullahSarwary, il est recommandé de préférer Eloquent à QueryBuilder. Bien sûr, je n'ai pas encouragé l'utilisation de QueryBuilder et nous savons tous que chacun a ses propres cas d'utilisation.

Pourquoi donc ai-je écrit une réponse avec QueryBuilder ? Comme nous le voyons dans des documents éloquents :

Vous pouvez considérer chaque modèle Eloquent comme un puissant générateur de requêtes vous permettant d'interroger de manière fluide la table de la base de données associée au modèle.

BTWS le code ci-dessus avec eloquent devrait ressembler à ceci :

Project::orderBy('priority', 'desc')
->orderBy('email', 'asc')
->get();

-1voto

hackernewbie Points 623

Essayez ceci :

$categories     =   Category::all()->sortByDesc("created_at");

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