user()->images as $image) { if (File::exists(storage_path('app/public/'.$image->path))) { File::delete(storage_path('app/public/'.$image->path)); auth()->user()->images()->where('id', $image->id)->delete(); } } $data = $this->storeImage(); $newImage = auth()->user()->images()->create([ 'path' => $data['path'], 'width' => $data['width'], 'height' => $data['height'], 'location' => $data['location'], ]); $this->haveThumbnailImage($data, auth()->user()); auth()->user()->update(['updated_at' => now()]); return new ImageResource($newImage); } public function memos(Memo $memo) { foreach ($memo->images as $image) { if (File::exists(storage_path('app/public/'.$image->path))) { File::delete(storage_path('app/public/'.$image->path)); $memo->images()->where('id', $image->id)->delete(); } } $data = $this->storeImage(); $newImage = $memo->images()->create([ 'path' => $data['path'], 'width' => $data['width'], 'height' => $data['height'], 'location' => $data['location'], ]); $this->haveThumbnailImage($data, $memo); $memo->update(['updated_at' => now()]); return new ImageResource($newImage); } private function haveThumbnailImage($data, $object) { Image::make($data['image']) ->fit(round($data['width'] / 3, 0), round($data['height'] / 3, 0)) ->save(storage_path('app/public/thumbnail/images/'.$data['image']->hashName())); $object->images()->create([ 'path' => "thumbnail/".$data['path'], 'width' => round($data['width'] / 3, 0), 'height' => round($data['height'] / 3, 0), 'location' => $data['location']."-small", ]); } private function storeImage() { $data = request()->validate([ 'image' => 'required', 'width' => 'required', 'height' => 'required', 'location' => 'required', ]); $data['path'] = $data['image']->store('images', 'public'); Image::make($data['image']) ->fit($data['width'], $data['height']) ->save(storage_path('app/public/images/'.$data['image']->hashName())); return $data; } }