2016-09-27 62 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我意識到現在 –

相關問題