Je suis coincé sur une tâche simple. J'ai juste besoin de commander les résultats provenant de cet appel
$results = Project::all();
Où 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?
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.
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.
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.
Laravel 5.4 a ajouté les méthodes orderByDesc () au constructeur de requêtes:
$results = Project::orderByDesc('name')->get();
Bien que vous ayez besoin du résultat pour la date en tant que desc
$results = Project::latest('created_at')->get();
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.
Découvrez la méthode sortBy
pour Eloquent: http://laravel.com/docs/eloquent
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.