如何使用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();
希望能帮助到你 :)