Je veux trier plusieurs colonnes dans Laravel 4 en utilisant la méthode orderBy()
dans Laravel Eloquent. La requête sera générée en utilisant Eloquent comme ceci:
SELECT *
FROM mytable
ORDER BY
coloumn1 DESC, coloumn2 ASC
Comment puis-je faire ceci?
User::orderBy('name', 'DESC') ->orderBy('email', 'ASC') ->get();
Réponses:
Appelez simplement
orderBy()
autant de fois que vous en avez besoin. Par exemple:Génère la requête suivante:
la source
User::orderBy(array('name'=>'desc', 'email'=>'asc'))
$user->orders = array(array('column' => 'name', 'direction' => 'desc'), array('column' => 'email', 'direction' => 'asc'));
get
oufirst
), appelez-orderBy
le simplement . Sinon, non.Vous pouvez faire comme @rmobis l'a spécifié dans sa réponse, [Ajouter quelque chose de plus]
En utilisant
order by
deux fois:et la deuxième façon de le faire est,
En utilisant
raw order by
:Les deux produiront la même requête comme suit,
Comme @rmobis l'a spécifié dans le commentaire de la première réponse, vous pouvez passer comme un tableau pour classer par colonne comme ceci,
une autre façon de le faire est
iterate
en boucle,J'espère que ça aide :)
la source
Voici une autre esquive que j'ai trouvée pour ma classe de référentiel de base où je devais trier par un nombre arbitraire de colonnes:
Maintenant, vous pouvez faire votre appel comme ceci:
la source