belongsTo(Video::class); } public function getUrlAttribute(): string { return route('media.thumbnail', $this->filename); } /** * Absolute path to the slide image on local disk. * Old format: storage/app/public/thumbnails/{filename} * New format: storage/app/{relative-path} (filename contains a slash) */ public function localPath(): string { return str_contains($this->filename, '/') ? storage_path('app/' . $this->filename) : storage_path('app/public/thumbnails/' . $this->filename); } /** * Storage::delete()-compatible key for this slide file. */ public function storageKey(): string { return str_contains($this->filename, '/') ? $this->filename : 'public/thumbnails/' . $this->filename; } }