belongsTo(self::class, 'parent_id'); } public function children(): HasMany { return $this->hasMany(self::class, 'parent_id')->orderBy('nome'); } public function documenti(): HasMany { return $this->hasMany(Documento::class, 'cartella_id'); } public function ancestors(): array { $ancestors = []; $current = $this; while ($current->parent) { array_unshift($ancestors, $current->parent); $current = $current->parent; } return $ancestors; } public function fullPath(): string { $parts = collect($this->ancestors())->push($this)->pluck('nome')->toArray(); return '/' . implode('/', $parts); } }