laravel查询作用域

定义查询作用域有利于定位追踪代码,比如项目逻辑比较大比较复杂,使用此model的地方会有很多,而且项目更新迭代速度比较快,使用作用域有利于代码的复用简洁,多人开发有利于定位。

比如此项目多数表有共同字段,如店铺id,这时可以再baseModel里边定义一个店铺id的查询作用域,其他开发人员可以直接使用作用域,就不需要再使用where进行指定字段查询了。

/**
 * Class Author
 * @package App\Models
 * ----------------- 作用域 --------------
 * @method static static selectByMobile(string $mobile)  手机号查询
 */
class Author extends BaseModel
{
    /**
     * 通过手机号检索
     * @param Builder $query
     * @param string $mobile
     * @return Builder
     */
    public function scopeSelectByMobile(Builder $query,string $mobile):Builder
    {
        return empty($mobile) ? $query :$query->where('mobile',$mobile);
    }

}
// service 查询逻辑可以直接调用作用域进行查询,使用ide或者装插件的可以直接跳到指定作用域下
Author::selectFields([])->selectByMobile($mobile)->first();

你可能感兴趣的:(PHP,laravel,php)