Chcę posortować wiele kolumn w Laravel 4 za pomocą metody orderBy()
w Laravel Eloquent. Zapytanie zostanie wygenerowane przy użyciu Eloquent w następujący sposób:
SELECT *
FROM mytable
ORDER BY
coloumn1 DESC, coloumn2 ASC
W jaki sposób mogę to zrobić?
User::orderBy('name', 'DESC') ->orderBy('email', 'ASC') ->get();
Odpowiedzi:
Po prostu przywołaj
orderBy()
tyle razy, ile potrzebujesz. Na przykład:Tworzy następujące zapytanie:
źródło
User::orderBy(array('name'=>'desc', 'email'=>'asc'))
$user->orders = array(array('column' => 'name', 'direction' => 'desc'), array('column' => 'email', 'direction' => 'asc'));
get
lubfirst
), po prostu zadzwońorderBy
. W przeciwnym razie nie.Możesz zrobić tak, jak @rmobis podał w swojej odpowiedzi: [Dodanie do niego czegoś więcej]
Używając
order by
dwukrotnie:a drugim sposobem na to jest
Używanie
raw order by
:Oba wygenerują takie samo zapytanie, jak poniżej,
Jak podano @rmobis w komentarzu do pierwszej odpowiedzi, możesz przekazać jak tablicę, aby uporządkować według kolumny w ten sposób,
jeszcze jeden sposób na zrobienie tego
iterate
w pętli,Mam nadzieję, że to pomoże :)
źródło
Oto kolejny unik, który wymyśliłem dla mojej podstawowej klasy repozytorium, w którym musiałem uporządkować według dowolnej liczby kolumn:
Teraz możesz wykonać takie połączenie:
źródło