加载中...

order


order方法用于对操作的结果排序或者优先级限制。

用法如下:

  1. Db::table('think_user')
  2. ->where('status', 1)
  3. ->order('id', 'desc')
  4. ->limit(5)
  5. ->select();
  1. SELECT * FROM `think_user` WHERE `status` = 1 ORDER BY `id` desc LIMIT 5

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

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

  1. Db::table('think_user')
  2. ->where('status', 1)
  3. ->order(['order','id'=>'desc'])
  4. ->limit(5)
  5. ->select();

最终的查询SQL可能是

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

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

  1. Db::table('think_user')
  2. ->where('status', 1)
  3. ->order('id', 'desc')
  4. ->limit(5)
  5. ->delete();

生成的SQL

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

V5.1.7+版本开始,如果你需要在order方法中使用mysql函数的话,必须使用下面的方式:

  1. Db::table('think_user')
  2. ->where('status', 1)
  3. ->orderRaw("field(name,'thinkphp','onethink','kancloud')")
  4. ->limit(5)
  5. ->select();

还没有评论.