如何使用laravel 4中的多列进行sorting?

我想通过使用方法orderBy()的Eloquent在Laravel 4中sorting多个列。 查询将通过这样的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可以象这样通过像数组这样的列来sorting

 $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(); 

希望能帮助到你 :)