60. order

order方法用于对操作的结果排序或者优先级限制。
Db::table('user')
->where('status', 1)
->order('id', 'desc')
->limit(5)
->select();
 SELECT * FROM `user` WHERE `status` = 1 ORDER BY `id` desc LIMIT 5

如果没有指定desc或者asc排序规则的话,默认为asc

支持使用数组对多个字段的排序,例如:

Db::table('user')
->where('status', 1)
->order(['order','id'=>'desc'])
->limit(5)
->select(); 

最终的查询SQL可能是

SELECT * FROM `user` WHERE `status` = 1 ORDER BY `order`,`id` desc LIMIT 5

对于更新数据或者删除数据的时候可以用于优先级限制

Db::table('user')
->where('status', 1)
->order('id', 'desc')
->limit(5)
->delete(); 

生成的SQL

DELETE FROM `user` WHERE `status` = 1 ORDER BY `id` desc LIMIT 5

如果你需要在order方法中使用MySQL函数的话,必须使用下面的方式:

Db::table('user')
->where('status', 1)
->orderRaw("field(name,'thinkphp','onethink','kancloud')")
->limit(5)
->select();
下一节:GROUP方法通常用于结合合计函数,根据一个或多个列对结果集进行分组 。group方法只有一个参数,并且只能使用字符串。