我遇到的问题是,当我尝试使用->delete()
从数据库中删除记录时,我的代码在成功删除记录后停止。
此代码不执行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;
}
但是当我在Storage::delete($image)
之前放置$image->delete();
代码时,
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;
}
答案 0 :(得分:1)
您需要查看详细信息。您正在创建两个名为$image
的变量,这就是您的问题。
在第一种情况下,您正在调用Storage::delete($image);
,其中$image
是一个对象,而在第二种情况下,您正在调用相同的方法,但在这种情况下,$image
是一个Input::get('image')
。
如果您只是将Input::get('image')
的变量重命名为$imageParam = Input::get('image')
并执行Storage::delete($imageParam);
,则它应适用于这两种情况。
底线是:永远不要使用相同的变量名称,因为它会导致这种不必要的混淆。