getClientOriginalName(); $extension = pathinfo($originalFileName, PATHINFO_EXTENSION); $newFileName = $prefix.'_'.pathinfo($originalFileName, PATHINFO_FILENAME).'.'.$extension; $path = Storage::disk('local')->putFileAs( $this->project->attachmentPath, $file, $newFileName ); $this->attachments()->save(new ProjectMailingAttachment([ 'name' => $name, 'path' => $path ])); } public function report() { return $this->belongsTo(ProjectReport::class, 'report_id', 'id'); } public function project() { return $this->belongsTo(Project::class, 'project_id', 'id'); } public function recipients() { return $this->hasMany(ProjectMailingRecipient::class); } public function attachments() { return $this->hasMany(ProjectMailingAttachment::class); } protected function subject(): Attribute { return Attribute::make( set: function ($value) { return str_replace(['{date}'], [now()->toDateString()], $value); } ); } protected static function booted(): void { parent::booted(); static::updated(function (ProjectMailing $projectMailing) { event(new ProjectMailingStatus($projectMailing)); }); } }