如何删除和取消链接json格式的多张图片

时间:2019-04-28 09:31:50

标签: php json laravel

我在数据库中保存了多个图像,

["7541556437392.JPG","9741556437392.JPG"]

我尝试传递json解码和存储在数据库中的image参数,但是出现错误消息

  

数组到字符串的转换

我的删除控制器

public function forceDestroy($id)
{
    $post = Post::withTrashed()->findOrFail($id);
    $post->tags()->detach(); //tag
    $post ->forceDelete();

    $this->removeImage(json_decode($post->image,true));

    Alert::success('Your post has been deleted successfully')->persistent('Close');

    return redirect('admins-blogpost?status=trash');
}

我的删除图片方法,在删除与它们相关的信息时,我尝试将图片和图片缩略图取消链接。

public function removeImage($image)
{
    if( ! empty($image))
    {
        $imagePath = $this->uploadPath . '/' . $image;
        $ext = substr(strrchr($image, '.'), 1);
        $thumbnail = str_replace(".{$ext}", "_thumb.{$ext}", $image);
        $thumbnailPath = $this->uploadPath . '/' . $thumbnail;
        if(file_exists($imagePath) ) unlink($imagePath);
        if(file_exists($thumbnailPath) ) unlink($thumbnailPath);
    }
}

我要删除所有与图片有关的帖子时删除所有图片。如何解决我的问题?

1 个答案:

答案 0 :(得分:1)

由于您的JSON表示数组,因此您需要遍历其元素。试试这个:

foreach (json_decode($post->image, true) as $image) {
    $this->removeImage($image);
}