Ich möchte mehrere Spalten in Laravel 4 mithilfe der Methode orderBy()
in Laravel Eloquent sortieren . Die Abfrage wird mit Eloquent wie folgt generiert:
SELECT *
FROM mytable
ORDER BY
coloumn1 DESC, coloumn2 ASC
Wie kann ich das machen?
Ich möchte mehrere Spalten in Laravel 4 mithilfe der Methode orderBy()
in Laravel Eloquent sortieren . Die Abfrage wird mit Eloquent wie folgt generiert:
SELECT *
FROM mytable
ORDER BY
coloumn1 DESC, coloumn2 ASC
Wie kann ich das machen?
User::orderBy('name', 'DESC') ->orderBy('email', 'ASC') ->get();
Antworten:
Rufen
orderBy()
Sie einfach so oft auf, wie Sie es benötigen. Zum Beispiel:Erzeugt die folgende Abfrage:
quelle
User::orderBy(array('name'=>'desc', 'email'=>'asc'))
$user->orders = array(array('column' => 'name', 'direction' => 'desc'), array('column' => 'email', 'direction' => 'asc'));
get
oderfirst
), rufen SieorderBy
es einfach an. Sonst nein.Sie können tun, was @rmobis in seiner Antwort angegeben hat: [Etwas mehr hinzufügen]
Mit
order by
zweimal:und der zweite Weg, es zu tun, ist,
Verwenden von
raw order by
:Beide erzeugen dieselbe Abfrage wie folgt:
Wie @rmobis in Kommentar von erster Antwort angegeben Sie können wie ein Array an , um nach der Kolonne passieren wie diese,
Eine weitere Möglichkeit ist die
iterate
Schleife.Ich hoffe es hilft :)
quelle
Hier ist ein weiteres Ausweichen, das ich mir für meine Basis-Repository-Klasse ausgedacht habe, in der ich nach einer beliebigen Anzahl von Spalten bestellen musste:
Jetzt können Sie Ihren Anruf folgendermaßen tätigen:
quelle