Laravel删除本地存储图片报错Call to a member function delete() on string怎么解决
错误原因
- 报错的直接原因是你对字符串类型的
$destination调用了delete()方法,字符串本身不存在这个类方法 - 代码逻辑中已经通过
File::delete($destination)完成了本地图片文件的删除,后续写的$destination->delete()属于冗余的错误代码 - 如果你是要删除数据库中对应的
Autoridad记录,应该调用模型实例的delete()方法,而非路径字符串的方法
修复后的代码
public function destroy($id) { $autoridad = Autoridad::findOrFail($id); // 替换为findOrFail避免id不存在时触发后续报错 $destination = public_path('imagen/'.$autoridad->imagen); // 用public_path生成绝对路径,避免相对路径匹配失败问题 if(File::exists($destination)){ File::delete($destination); } $autoridad->delete(); // 调用模型实例的delete方法删除数据库记录 return redirect()->route('autoridades.index'); }
补充说明
- 如果你的图片是存储在storage目录下,把
public_path()替换为storage_path()即可,根据实际存储路径调整就行 - 用框架自带的路径生成辅助函数,比手动拼接相对路径稳定性更高,不会因为项目入口文件位置变更导致路径找不到的问题
内容的提问来源于stack exchange,提问作者Martin2236
相关产品推荐
相关产品推荐

