Laravel模型的scope過濾

寫在模型中,供模型調(diào)用(和關(guān)聯(lián)查詢類似),來判斷是否有沒有這個范圍

一、語法

public function scopeActive(Builder $query,  參數(shù)){
  return $query->where('active', 1);
}

public function articleTopics(){
        return $this->hasMany('App\Http\Model\ArticleTopic','article_id','id');
}
doesntHave中第一個參數(shù)為關(guān)聯(lián)模型
public function scopeTopicNotBy(Builder $query, $topic_id){
        return $query->doesntHave('articleTopics','and', function($q)use($topic_id){
            $q->where('topic_id', $topic_id);
        });
 }

解析:
必須以scope開頭。后面第一個字母大寫。
后面括號中第一個必須是Builder,第二個參數(shù)可以根據(jù)需要定義。
返回值也必須是Builder

二、用法:

$user = App\User::popular()->active()->orderBy('created_ar')->get();

三、全局scope

同樣在模型里面編寫,對當前模型生效;

//全局scope
    protected static function boot(){
        parent::boot();
        static::addGlobalScope('avaiable',function(Builder $builder){
            $builder->whereIn('status',[0,1]);
        });
    }

四、如何取消全局scope

有的地方我們用不到這全局scope,需要排除在外
帶上withoutGlobalScope即可

Article::withoutGlobalScope('avaiable')->where('status', 0)->orderBy('created_at','desc')->paginate(10);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,534評論 19 139
  • AngularJS是什么?AngularJs(后面就簡稱ng了)是一個用于設(shè)計動態(tài)web應(yīng)用的結(jié)構(gòu)框架。首先,它是...
    200813閱讀 1,761評論 0 3
  • 通過AngularJS仿豆瓣一刻的案例:https://github.com/zhongxiaolian/doub...
    中小戀閱讀 1,870評論 1 21
  • 在健身中心經(jīng)常會看到健身人士用泡沫軸或按摩滾棒對肌肉進行施壓按摩。這是一種行之有效的放松筋膜的方法,被稱作自我筋膜...
    金剛楊閱讀 8,653評論 0 8
  • 大樹小草鮮花, 蜻蜓蝴蝶蜜蜂, 金魚蝌蚪青蛙, 歡歌笑語,真是熱鬧絕佳!
    弈寶閱讀 1,054評論 0 2

友情鏈接更多精彩內(nèi)容