belongsToMany(Blog::class, 'common_word_blog') ->using(CommonWordBlog::class) ->withPivot(['count', 'is_linked']) ->withTimestamps() ->withoutGlobalScopes(); } public function blockedWords() { return $this->hasOne(BlockedWord::class, 'word', 'title'); } public function getArticleCountAttribute() { return $this->blogs()->count(); } public function getIsBlockedAttribute() { return $this->status == self::STATUS_BLOCKED; } public function getLinkedArticlesCountAttribute() { return $this->blogs() ->wherePivot('is_linked', true) ->count(); } public function scopeSingleWords($query) { return $query->where('word_type', self::TYPE_SINGLE); } public function scopeDoubleWords($query) { return $query->where('word_type', self::TYPE_DOUBLE); } public function scopeTripleWords($query) { return $query->where('word_type', self::TYPE_TRIPLE); } public function scopeQuadWords($query) { return $query->where('word_type', self::TYPE_QUAD); } public function scopeActive($query) { return $query->where('status', self::STATUS_ACTIVE); } public function scopeBlocked($query) { return $query->where('status', self::STATUS_BLOCKED); } }