企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 排序,分组,限制和偏移 ### [](https://octobercms.com/docs/database/query#ordering-grouping-limit-and-offset)排序,分组,限制和偏移 #### 排序 该`orderBy`方法使您可以按给定的列对查询结果进行排序。方法的第一个参数`orderBy`应该是您希望排序的列,而第二个参数控制排序的方向,可以是`asc`或`desc`: ~~~ $users = Db::table('users') ->orderBy('name', 'desc') ->get(); ~~~ #### 最新/最旧 该`latest`和`oldest`方法,让你轻松为了结果的日期。默认情况下,结果将按该`created_at`列排序。或者,您可以传递希望排序的列名: ~~~ $user = Db::table('users') ->latest() ->first(); ~~~ #### 随机顺序 该`inRandomOrder`方法可以用于对查询结果进行随机排序。例如,您可以使用此方法来获取随机用户: ~~~ $randomUser = Db::table('users') ->inRandomOrder() ->first(); ~~~ #### 分组 所述`groupBy`和`having`方法可以用于组查询结果。该`having`方法的签名类似于该方法的签名`where`: ~~~ $users = Db::table('users') ->groupBy('account_id') ->having('account_id', '>', 100) ->get(); ~~~ 您可以将多个参数传递给该`groupBy`方法以按多列分组: ~~~ $users = Db::table('users') ->groupBy('first_name', 'status') ->having('account_id', '>', 100) ->get(); ~~~ 对于更高级的`having`语句,您可能希望使用该[`havingRaw`](https://octobercms.com/docs/database/query#aggregates)方法。 #### 限制和偏移 要限制查询返回的结果数,或跳过查询(`OFFSET`)中给定的结果数,可以使用`skip`和`take`方法: ~~~ $users = Db::table('users')->skip(10)->take(5)->get(); ~~~