Как использовать порядок для нескольких столбцов в laravel 4?

Я хочу сортировать для нескольких столбцов в Laravel 4 с помощью метода orderBy() из Eloquent. Запрос будет генерировать Eloquent следующим образом:

 SELECT * FROM mytable ORDER BY coloumn1 DESC, coloumn2 ASC 

Как я могу сделать?

Просто вызовите orderBy() столько раз, сколько вам нужно. Например:

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

Выдает следующий запрос:

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

Вы можете сделать, как указал @rmobis в своем ответе, [Добавление в него чего-то большего]

Использование order by два раза:

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

и второй способ сделать это,

Использование raw order by :

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

Оба будут производить тот же запрос, что и ниже,

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

Поскольку @rmobis, указанный в комментарии первого ответа, вы можете передать как массив, чтобы упорядочить по столбцу, как это,

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

еще один способ сделать это – iterate в цикле,

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

Надеюсь, поможет 🙂