我有一个方法可以删除属于它的产品和图片,但我无法删除该图片。
我在哪里错了?
public function deleteProduct($ids)
{
foreach ($ids as $id => $value) {
$product = Product::find($id);
$productImage = $product->image_path;
if ($productImage) {
Storage::delete($productImage);
$product->destroy($id);
}
}
}
我在存储和公用文件夹之间有一个符号链接。
存储图像位于例如 - storage / app / public / images / products / 4 / image.png
在public - public / storage / images / products / 4 / imagep.png
下图片路径存储在数据库中 - /storage/images/products/4/ACTCMRcYlWR8Bn3ZxoJ7bpiDJ7.png
答案 0 :(得分:3)
我必须在路径中添加删除'/ storage'部分并添加'/ public'。
$productImage = str_replace('/storage', '', $product->image_path);
Storage::delete('/public' . $productImage);
答案 1 :(得分:0)
我会在我的模型或助手中写这样的东西,并在我想要的时候调用它:
public static function delete_file($path)
{
if (\Storage::disk('public')->exists($path))
\Storage::disk('public')->delete($path);
}
答案 2 :(得分:0)
如果您在路径中添加了 /storage 部分,您可以使用文件系统:
if (File::exists(public_path($image->path))) {
File::delete(public_path($image->path));
}