2013-06-09 14 views

Odpowiedz

225

Po prostu wywołaj orderBy() tyle razy, ile jej potrzebujesz. Na przykład:

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

Produkuje następujące zapytanie:

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

Byłoby miło, gdybyśmy mogli przekazać tablicę takich jak: 'użytkownika :: orderby (array (” name '=>' desc ',' email '=>' asc ')) ' – JoshuaDavid

+10

@FireCoding, możesz zrobić' $ user-> orders = array (array (' column '=>' name ',' direction '= > 'desc'), array ('column' => 'email', 'direction' => 'asc')); ' – rmobis

+0

Czy istnieje sposób na dodanie orderBy do ustalonego zapytania? – Rafael

8

Można zrobić jak @rmobis określił w swej odpowiedzi, [Dodawanie do niego coś więcej]

Korzystanie order by dwukrotnie:

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

i sekunda OND sposobem na to jest,

Korzystanie raw order by:

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

Zarówno będzie produkować samo zapytanie, jak postępować,

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

Jak @rmobis podano w komentarzu do pierwszej odpowiedzi możesz przekazać jak tablicę do zamówienia przez kolumnę w ten sposób,

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

jeszcze jeden sposób na to jest iterate w pętli

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

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

$results = $query->get(); 

Nadzieja to pomaga :)

+0

Czy mogę używać orderByRaw AND orderBy razem? Wydaje się, że to działa dla mnie, wynikowa kwerenda wydaje się tylko respektować orderByRaw –

+0

spróbuj najpierw umieścić orderBy, a następnie orderByRaw i zobacz wynik @GeorgeAvgoustis –

+0

Niestety nie można tego zrobić, ponieważ najpierw trzeba go wybrać losowo, a następnie uporządkować według ostatecznego kwalifikatora . –

Powiązane problemy