2013-06-09 5 views

Antwort

225

Rufen Sie einfach orderBy() so oft wie Sie es brauchen. Zum Beispiel:

User::orderBy('name', 'DESC') 
    ->orderBy('email', 'ASC') 
    ->get(); 

Erzeugt die folgende Abfrage:

SELECT * FROM `users` ORDER BY `name` DESC, `email` ASC 
+12

Es wäre schön, wenn wir ein Array wie passieren könnte: 'User :: orderBy (array (‘ name '=>' desc ',' email '=>' asc ')) ' – JoshuaDavid

+10

@FireCoding, du kannst' $ user-> orders = array (array (' spalte '=>' name ',' direction '= > 'desc'), array ('column' => 'email', 'direction' => 'asc')); ' – rmobis

+0

Gibt es eine Möglichkeit, eine OrderBy zu einer bestehenden Anfrage hinzuzufügen? – Rafael

8

Sie können tun, als @rmobis in seiner Antwort festgelegt hat, [Hinzufügen von etwas mehr hinein]

order by Mit zweimal:

MyTable::orderBy('coloumn1', 'DESC') 
    ->orderBy('coloumn2', 'ASC') 
    ->get(); 

und der sek ond Art und Weise zu tun, ist es,

raw order by Verwendung:

MyTable::orderByRaw("coloumn1 DESC, coloumn2 ASC"); 
    ->get(); 

Beide werden gleiche Abfrage produzieren wie folgen,

SELECT * FROM `my_tables` ORDER BY `coloumn1` DESC, `coloumn2` ASC 

Wie @rmobis in Kommentar der ersten Antwort angegeben Sie können Pass wie ein Array, um nach Spalte so zu bestellen,

$myTable->orders = array(
    array('column' => 'coloumn1', 'direction' => 'desc'), 
    array('column' => 'coloumn2', 'direction' => 'asc') 
); 

eine weitere Möglichkeit ist es iterate in Schleife zu tun,

$query = DB::table('my_tables'); 

foreach ($request->get('order_by_columns') as $column => $direction) { 
    $query->orderBy($column, $direction); 
} 

$results = $query->get(); 

Hoffe, es hilft :)

+0

kann ich orderByRaw AND orderBy zusammen verwenden? scheint nicht für mich arbeiten, die resultierende Abfrage scheint nur zu respektieren OrderByRaw –

+0

versuchen, OrderBy zuerst und dann orderByRaw und sehen Sie das Ergebnis @GeorgeAvgoustis –

+0

Leider kann dies nicht getan werden, da es zunächst randomisiert werden muss und dann durch die endgültige Qualifier bestellen . –