Laravel - удаление изображений из хранилища / пост обновления - PullRequest
0 голосов
/ 06 апреля 2020

приветствуют всех

Модель сообщения

public function images()
{
    return $this->hasMany(PostImages::class);

}

Модель PostImages

public function post()
{
    return $this->belongsTo(Post::class);
}

PostsController / update

public function update(UpdatePostRequest $request, Post $post)
{
    //
    $data = $request->only(['title', 'description', 'contents', 'price']);

    if ($request->hasFile('images'))
    {
        $getId = Post::find($post->id);
        $getId->images()->delete();     // --> this delete from database table $post->id

        $uploadPicture = array();
        foreach ($request->file('images') as $photo) {
            $file      = $photo;
            $filename  = $file->getClientOriginalName();
            $picture   = date('His').'-'.$filename;

            $file->move(public_path('storage/images/'), $picture);

            array_push($uploadPicture, new PostImages(array('image' => 'images/'. $picture)));
        }

        $post->images()->saveMany($uploadPicture);
    }

    if ($request->input('contents')) {
        $data['content'] = $request->contents;
    }

    $post->update($data);
}

База данных post_images

необходимо удалить старые изображения в хранилище, получить путь к данным и обновить новые изображения

1 Ответ

0 голосов
/ 06 апреля 2020

Вы можете использовать другую функцию для удаления изображений из папки. как здесь,

   private function unlinkPostImages($images)
{
    if(!empty($images)){
        foreach ($images as $img){
            $old_image = 'YOUR_IMAGE_PATH_HERE/' . $img->image;
            if (file_exists($old_image)) {
                @unlink($old_image);
            }
        }
    }
}

Затем вызовите эту функцию над функцией удаления изображения. как это ...

$this->unlinkPostImages($getId->images); // this will delete image from folder
$getId->images()->delete();     // --> this delete from database table $post->id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...