belongsTo(User::class); } public function tags() { return $this->belongsToMany(Tag::class, 'paste_taggings'); } public function replaceTags(array $tags) { $this->tags()->detach(); foreach ($tags as $tagName) { $tag = Tag::getOrCreateByName($tagName); $this->tags()->attach($tag); } // FIXME: We need to get rid of tagsys. $this->tagsys = implode(',', $tags); $this->save(); } public static function getRecent(int $count = 10) : Collection { return Paste::with('user') ->orderBy('created_at', 'DESC') ->where('visible', 0) ->limit($count)->get(); } public static function getRecentlyUpdated(int $count = 10) : Collection { return Paste::with('user') ->orderBy('updated_at', 'DESC') ->where('visible', 0) ->limit($count)->get(); } public static function getMostViewed(int $count = 10) : Collection { return Paste::with('user') ->orderBy('views') ->where('visible', 0) ->limit($count)->get(); } public static function getMonthPopular(int $count = 10) : Collection { return Paste::with('user') ->whereRaw('MONTH(created_at) = MONTH(NOW())') ->where('visible', 0) ->orderBy('views') ->limit($count)->get(); } public static function getRandom(int $count = 10) : Collection { return Paste::with('user') ->orderByRaw('RAND()') ->where('visible', 0) ->limit($count)->get(); } }