Я хочу отсортировать несколько столбцов в Laravel 4 с помощью метода orderBy()
в Laravel Eloquent. Запрос будет сгенерирован с использованием Eloquent следующим образом:
SELECT *
FROM mytable
ORDER BY
coloumn1 DESC, coloumn2 ASC
Как я могу это сделать?
User::orderBy('name', 'DESC') ->orderBy('email', 'ASC') ->get();
Ответы:
Просто вызывайте
orderBy()
столько раз, сколько вам нужно. Например:Производит следующий запрос:
источник
User::orderBy(array('name'=>'desc', 'email'=>'asc'))
$user->orders = array(array('column' => 'name', 'direction' => 'desc'), array('column' => 'email', 'direction' => 'asc'));
get
илиfirst
), просто позвонитеorderBy
. Остальное нетВы можете сделать то, что @rmobis указал в своем ответе [Добавление чего-то большего в него]
Используя
order by
дважды:и второй способ сделать это,
Использование
raw order by
:Оба будут выдавать один и тот же запрос, как следует,
Как указано в комментарии к первому ответу @rmobis, вы можете передать как массив для сортировки по столбцу, как это,
еще один способ сделать это
iterate
в цикле,Надеюсь, поможет :)
источник
Вот еще одна уловка, которую я придумал для своего базового класса репозитория, где мне нужно было упорядочить по произвольному количеству столбцов:
Теперь вы можете сделать свой звонок так:
источник