'文章列表', self::TYPE_SHOW => '文章详情', self::TYPE_ADVERT => '图片', self::TYPE_PATENT => '专利', ]; public function getLinkAttribute() { if ($this->url) { return $this->url; } return route('category.show', $this); } /** * 关联的数据 * @return [type] [description] */ public function relations() { switch ($this->type) { case self::TYPE_SHOW: return $this->hasOne(Article::class, 'id', 'article_id'); break; case self::TYPE_ARTICLE: return $this->hasMany(Article::class); break; case self::TYPE_ADVERT: return $this->hasMany(Advert::class); break; default: return null; } } public function parent(): BelongsTo { return $this->belongsTo(__CLASS__)->withDefault(['name' => '顶级分类']); } public function children(): HasMany { return $this->hasMany(__CLASS__, 'parent_id'); } }