模型增加统一查询

模型增加统一查询,每次查询都要加入固定的查询,比如

where('status', Page::STATUS_PRIVATE);

在需要的模型内增加如下方法:增加你所需要增加的查询,这样子使用该模型查询的时候,会统一增加该查询,如下示例就是在模型查询中只查询出 status 为下架状态。

public function registerGlobalScopes($builder)
    {
        foreach ($this->getGlobalScopes() as $identifier => $scope) {
            $builder->withGlobalScope($identifier, $scope);
        }
//这里就可以随便添加统一的条件了
        $builder->where('status', Page::STATUS_PRIVATE);
        return $builder;
    }
本作品采用《CC 协议》,转载必须注明作者和本文链接
chowjiawei
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 2
 protected static function boot()
 {
     parent::boot();
     static::addGlobalScope(new DefaultStatusScope());
 }


 class DefaultStatusScope implements Scope
 {
    public function apply(Builder $builder, Model $model) {
      $builder->where('status', Page::STATUS_PRIVATE);
    } 
 }
2年前 评论
chowjiawei (楼主) 2年前
luyang (作者) 2年前
chowjiawei (楼主) 2年前

为了这一个模型 在加个文件 有点累吧

全局作用域也是支持匿名的

举个例子,假设未来的某一天,我来接手你的项目,需要增加新模型,但是表里不存在status字段导致报错,我看了文档之后,我第一个去找的,是去找是不是模型添加了全局或者局部作用域,而不是你这个自己实现的统一查询的方法

2年前 评论
chowjiawei (楼主) 2年前
chowjiawei (楼主) 2年前
MArtian 2年前
chowjiawei (楼主) 2年前
pigzzz (作者) 2年前
MArtian 2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!