'文章列表', self::TYPE_SHOW => '文章详情', self::TYPE_ADVERT => '图片列表', self::TYPE_VIDEO => '视频列表', ]; public $cover_field = 'cover'; public function getLogoUrlAttribute(): string { return $this->parseImageUrl($this->logo); } public function getLinkAttribute(): string { return route('category.show', $this); } /** * 关联的数据 * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany|\Illuminate\Database\Eloquent\Relations\HasMany|\Illuminate\Database\Eloquent\Relations\HasOne|null [type] [description] */ public function relations() { switch ($this->type) { case self::TYPE_SHOW: return $this->hasOne(Article::class)->where('id', $this->article_id); break; case self::TYPE_ARTICLE: return $this->belongsToMany(Article::class); break; case self::TYPE_ADVERT: return $this->hasMany(Advert::class); break; case self::TYPE_VIDEO: return $this->hasMany(Video::class); break; default: return null; } } public function childrens(): HasMany { return $this->hasMany(self::class, 'parent_id'); } public function parent(): HasOne { return $this->hasOne(self::class, 'id', 'parent_id'); } public function article(): BelongsTo { return $this->belongsTo(Article::class); } /** * Notes: 获取当前分类及子分类ID * @Author: * @Date : 2020/4/6 3:12 下午 * @return array */ public function getAllChildrenId(): array { $ids = array_keys($this->buildSelectOptions([], $this->id)); if ($ids) { array_unshift($ids, $this->id); return $ids; } return []; } // public function articles(): BelongsToMany // { // return $this->belongsToMany(Article::class); // } public function articles(): HasMany { return $this->hasMany(Article::class); } /** * Notes: 格式化description * @Author: 玄尘 * @Date : 2021/10/8 15:24 */ public function getDescriptionHtmlAttribute(): string { return str_replace("\n", "
", $this->description); } }