belongsTo(Image::class); } public function category() { return $this->belongsTo(Category::class); } public function tags() { return $this->belongsToMany(Tag::class, 'media_tag'); } public function notes() { return $this->morphMany(Note::class, 'noteable'); } public function myNote() { return $this->morphOne(Note::class, 'noteable')->where('user_id', auth()->id()); } public function savedBy() { return $this->belongsToMany(User::class, 'saved_media') ->withTimestamps(); } public function getUrlAttribute() { if ($this->file_path) return asset('storage/' . $this->file_path); return $this->external_url; } public function getIsSavedAttribute() { if (!auth()->check()) return false; return $this->savedBy() ->where('user_id', auth()->id()) ->exists(); } }