*/ use HasFactory; protected $fillable = [ 'parent_id', 'portal', 'is_active', 'legacy_portal', 'legacy_id', ]; protected function casts(): array { return [ 'portal' => Portal::class, 'is_active' => 'boolean', ]; } /** * @return BelongsTo */ public function parent(): BelongsTo { return $this->belongsTo(self::class, 'parent_id'); } /** * @return HasMany */ public function children(): HasMany { return $this->hasMany(self::class, 'parent_id'); } /** * @return HasMany */ public function translations(): HasMany { return $this->hasMany(CategoryTranslation::class); } /** * Name aus der bereits (locale-gefiltert) geladenen Übersetzung, mit * `#id`-Fallback, falls keine Übersetzung vorliegt. Erwartet eine * eager-geladene `translations`-Relation der gewünschten Sprache. */ public function localizedName(): string { return $this->translations->first()?->name ?? '#'.$this->id; } /** * @return HasMany */ public function pressReleases(): HasMany { return $this->hasMany(PressRelease::class); } /** * @return BelongsToMany */ public function footerCodes(): BelongsToMany { return $this->belongsToMany(FooterCode::class, 'category_footer_code'); } }