Skip to main content

How to delete previous image on update new image or delete record in laravel?

Delete previous image on update new image or delete record in laravel

Laravel Model

public function getProfileImageAttribute($profile_image)

    {

        if(!empty($profile_image))

        {

            return $filepath = URL::to('/') . '/public/upload/' . $profile_image;

        }

    }


    // Custom method to get the original unmodified URL

    public function getOriginalProfileImageAttribute()

    {

        return $this->attributes['profile_image'];

    }


    function deleteProfileImage(){

        $model = $this;

        // Check if the avatar attribute is changing

        if ($model->isDirty('profile_image')) {

            // Delete the previous profile image if it exists

            $previousFile = $model->getOriginal('original_profile_image');

            if (!empty($previousFile) && Storage::disk('uploads')->exists($previousFile)) {

                // Delete the file

                Storage::disk('uploads')->delete($previousFile);

            }

        }

    }


    protected static function boot()

    {

        parent::boot();


        static::updating(function ($model) {

            $model->deleteProfileImage();

        });

        static::deleting(function ($model) {

            // Delete the previous profile image if it exists

            $previousFile = $model->getOriginal('original_profile_image');

            if (!empty($previousFile) && Storage::disk('uploads')->exists($previousFile)) {

                // Delete the file

                Storage::disk('uploads')->delete($previousFile);

            }

        });

    } 

Comments

Popular posts from this blog

How to check date format in PHP?

Check date format in PHP function isCorrectDateFromat($date){     if(!empty($date)){         $dateString = $date; // Replace this with your date string         $format = "Y-m-d"; // Replace this with your expected date format         $dateTime = DateTime::createFromFormat($format, $dateString);         if ($dateTime === false) { /*             echo "The date is not in the correct format."; */         } else {             $errors = DateTime::getLastErrors();             if (empty($errors)) { /*                 echo "The date is in the correct format."; */                 return true;             } else { /*                 echo "...