【问题标题】:Delete Image with category Delete删除类别为删除的图像
【发布时间】:2021-08-11 00:35:37
【问题描述】:

我有这个删除行但不从文件夹中删除图像的功能。我认为这会起作用,但事实并非如此。有人可以帮助更改此代码,以便我可以在删除时从文件夹中删除图像吗?

谢谢

public function PermDelete($id)
{
    $category = Category::find($id);
    File::delete(public_path('images/categories/'. $category->cat_image));
    $delete = Category::onlyTrashed()->findOrFail($id)->forceDelete();
    return redirect()->back()->with('success','Category has been permanently deleted successfully!');
}

【问题讨论】:

  • Category::find($id);Category::onlyTrashed()->findOrFail($id) 很相似,但又足够不同。如果您的数据库中的 category 行被软删除,Category::find($id); 将不起作用。如果不是软删除Category::onlyTrashed()->findOrFail($id) 将不起作用...您可能应该尝试对两者使用相同的方法...或者只是执行$category->forceDelete() 而不是再次查询。
  • 这样更有意义吗? $delete = Category::onlyTrashed()->findOrFail($id); File::delete(public_path('images/categories/'.$delete->cat_image)); $delete->forceDelete(); return redirect()->route('all.categories')->with('success','类别信息完全删除');
  • 是的,如果categories 行已被软删除,这将找到它,删除关联的文件,最后强制删除(硬删除)categories 行。只要您打算只对软删除的记录执行此操作,该代码就可以正常工作:)

标签: laravel file-upload


【解决方案1】:

而不是使用 File::delete(public_path('images/categories/'.$category->cat_image));

你可以简单地使用PHP函数unlink来删除

    unlink(public_path('images/categories/'. $category->cat_image));

或者您可以使用以下代码进行调试

    $path = public_path('images/categories/'. $category->cat_image);

    if(\File::exists($path)){
       \File::delete($path);
    }else{
       dd('File does not exists.');
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-26
    • 2017-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多