Si può fare @rmobis ha precisato nella sua risposta, [Aggiunta di qualcosa di più in esso]
Utilizzando order by
due volte:
MyTable::orderBy('coloumn1', 'DESC')
->orderBy('coloumn2', 'ASC')
->get();
e il sec ond modo per farlo è,
Utilizzando raw order by
:
MyTable::orderByRaw("coloumn1 DESC, coloumn2 ASC");
->get();
Entrambi produrrà stessa query come segue,
SELECT * FROM `my_tables` ORDER BY `coloumn1` DESC, `coloumn2` ASC
Come @rmobis specificato nel commento di prima risposta si può passare come una matrice per ordinare per colonna come questo,
$myTable->orders = array(
array('column' => 'coloumn1', 'direction' => 'desc'),
array('column' => 'coloumn2', 'direction' => 'asc')
);
un altro modo per farlo è iterate
in loop,
$query = DB::table('my_tables');
foreach ($request->get('order_by_columns') as $column => $direction) {
$query->orderBy($column, $direction);
}
$results = $query->get();
Speranza che aiuta :)
fonte
2017-04-25 06:27:40
Sarebbe bello se potessimo passare un array come: 'User :: orderBy (array (' nome '=>' desc ',' email '=>' asc ')) ' – JoshuaDavid
@FireCoding, puoi fare' $ user-> orders = array (array (' column '=>' name ',' direction '= > 'desc'), array ('column' => 'email', 'direction' => 'asc')); ' – rmobis
C'è un modo per aggiungere un ordine da una query stabilita? – Rafael