web-dev-qa-db-fra.com

Laravel Eloquent: Classement des résultats de tous ()

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

$results = Project::all();

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

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

Mais ça n'a pas marché. Quel est le meilleur moyen d'obtenir toutes les données d'une table et de les commander?

181
MatterGoal

Vous pouvez réellement le faire dans la requête.

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

Cela retournera tous les résultats avec le bon ordre.

330
Travis B

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

Ordre croissant

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

Ordre décroissant

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

Consultez la documentation sur les collections pour plus de détails.

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

100
Yannick Y

En outre, pour renforcer les réponses précédentes, vous pouvez également la trier par ordre décroissant desc ou par ordre croissant asc en ajoutant le deuxième paramètre.

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

J'espère que cela t'aides.

26
kehinde

Mise à jour 2017


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

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

Bien que vous ayez besoin du résultat pour la date en tant que desc

$results = Project::latest('created_at')->get();
9
DsRaj

FAIRE CELA:

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

NE PAS FAIRE CELA:

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

POURQUOI? En bref, la première approche est plus rapide que la seconde.

6
doncadavona

Découvrez la méthode sortBy pour Eloquent: http://laravel.com/docs/eloquent

3
Half Crazed

Remarque, vous pouvez faire:

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

Cela génère une requête comme:

"SELECT name FROM proyect ORDER BY 'name' ASC"

Dans certaines applications, lorsque la base de données n'est pas optimisée et que la requête est plus complexe et qu'il est nécessaire d'éviter de générer un ORDER BY dans le SQL final, vous pouvez effectuer les opérations suivantes:

$result = Project::select('name')->get();
$result = $result->sortBy('name');
$result = $result->values()->all();

C'est maintenant php qui commande le résultat.

3
hkcoyant