2016-09-27 67 views
0

我遇到了这个问题,当我尝试使用->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; 
} 

回答

1

你需要看看细节。您正在创建两个名为$image的变量,这是您的问题。

在第一种情况下,你打电话Storage::delete($image);其中$image是一个对象,在第二种情况下,你调用同样的方法,但在这种情况下$imageInput::get('image')

如果您只是简单地将Input::get('image')的变量重命名为$imageParam = Input::get('image')并执行Storage::delete($imageParam);,则它应该适用于这两种情况。

底线是:从不使用相同的变量名,因为它会导致这种不必要的混淆。

+0

Ty我意识到现在 –

相关问题