https://learnku.com/docs/laravel/5.6/eloquent/1403
本地范围
本地范围允许定义通用的约束集合以便在应用中复用。 例如, 你可能经常需要获取「受欢迎的」用户。要定义这样一个范围,只需要在对应的 Eloquent 模型方法前加入 scope
前缀。
作用域总是返回一个查询构造器实例:
<?php namespace App; use IlluminateDatabaseEloquentModel; class User extends Model { /** * 只查询受欢迎的用户. * * @param IlluminateDatabaseEloquentBuilder $query * @return IlluminateDatabaseEloquentBuilder */ public function scopePopular($query) { return $query->where('votes', '>', 100); } /** * 只查询 active 的用户. * * @param IlluminateDatabaseEloquentBuilder $query * @return IlluminateDatabaseEloquentBuilder */ public function scopeActive($query) { return $query->where('active', 1); } }
利用本地范围
一旦定义范围。就可以在模型查询的时候调用范围方法。在方法调用时你不需要添加 scope
前缀。你甚至可以链式调用不同的范围, 例如:
$users = AppUser::popular()->active()->orderBy('created_at')->get();