当代码按特定顺序时,文件不会被删除
问题描述:
我遇到了这个问题,当我尝试使用->delete()
从数据库中删除一条记录时,我的代码在成功删除记录后停止。当代码按特定顺序时,文件不会被删除
当我$image->delete();
代码工作前置于Storage::delete($image)
此代码不执行Storage::delete($image)
public function productImageDelete(Request $request){
if($request->ajax()):
$image_id = Input::get('image-id');
$image = Input::get('image');
try {
$image = Image::findOrFail($image_id);
$image->delete();
Storage::delete($image); //This doesn't execute at all
return "success";
} catch (\Illuminate\Database\QueryException $e) {
return $e;
}
endif;
}
不过。
public function productImageDelete(Request $request){
if($request->ajax()):
$image_id = Input::get('image-id');
$image = Input::get('image');
try {
Storage::delete($image); //This executes first
$image = Image::findOrFail($image_id);
$image->delete();
return "success";
} catch (\Illuminate\Database\QueryException $e) {
return $e;
}
endif;
}
答
你需要看看细节。您正在创建两个名为$image
的变量,这是您的问题。
在第一种情况下,你打电话Storage::delete($image);
其中$image
是一个对象,在第二种情况下,你调用同样的方法,但在这种情况下$image
是Input::get('image')
。
如果您只是简单地将Input::get('image')
的变量重命名为$imageParam = Input::get('image')
并执行Storage::delete($imageParam);
,则它应该适用于这两种情况。
底线是:从不使用相同的变量名,因为它会导致这种不必要的混淆。
Ty我意识到现在 –