ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 查询范围 ### [](https://octobercms.com/docs/database/model#query-scopes)查询范围 范围使您可以定义常见的约束集,可以轻松地在整个应用程序中重复使用这些约束。例如,您可能需要经常检索所有被认为“受欢迎”的用户。要定义范围,只需在模型方法前添加前缀`scope`: ~~~ class User extends Model { /** * Scope a query to only include popular users. */ public function scopePopular($query) { return $query->where('votes', '>', 100); } /** * Scope a query to only include active users. */ public function scopeActive($query) { return $query->where('is_active', 1); } } ~~~ #### 利用查询范围 定义范围后,可以在查询模型时调用范围方法。但是,`scope`在调用方法时不需要包括前缀。您甚至可以将调用链接到各种范围,例如: ~~~ $users = User::popular()->active()->orderBy('created_at')->get(); ~~~ #### 动态范围 有时您可能希望定义一个接受参数的范围。首先,只需将其他参数添加到您的范围。范围参数应在`$query`参数后定义: ~~~ class User extends Model { /** * Scope a query to only include users of a given type. */ public function scopeApplyType($query, $type) { return $query->where('type', $type); } } ~~~ 现在,您可以在调用范围时传递参数: ~~~ $users = User::applyType('admin')->get(); ~~~