belongsTo(News::class); } public function contentType() { switch ($this->paragraph_type){ case 1: return "image"; case 2: return "text"; case 3: return "video"; default: return ""; } } public function photos(){ return $this->hasMany(NewsPhoto::class)->orderBy("order"); } protected function paragraphVideoType(): Attribute { return Attribute::make( get: fn ($value) => ($this->paragraph_type == 3) ? ($this->attributes["video_type"] == 1 ? "url" : "upload") : null, ); } protected function paragraphVideoImg(): Attribute { return Attribute::make( get: fn ($value) => is_null($this->video_img) ? null :Storage::disk('public')->url($this->video_img), ); } protected function paragraphVideoUrl(): Attribute { return Attribute::make( get: fn ($value) => ($this->attributes["video_type"] == 2) ? Storage::disk('public')->url($this->attributes["video_url"]) : $this->attributes["link"], ); } }