2017-04-14 73 views
1

這就是我如何刪除一條記錄,你能否建議我什麼是刪除記錄的最佳方法。刪除用戶相關模型記錄的最佳方法

 public function delete_post($id) { 
     //Check if id is numeric and exists 
     if((is_numeric($id)) && (!empty($id))) 
     { 
      $post = Post::find($id); 
      // check if this id belongs to user (User has author) 
      if(Auth::id() == $post->user_id){ 
       Post::with('likes')->whereId($id)->delete(); 
      }else{ 
       Session::flash('error', 'You can't delete this. 
      } 
     }else{ 
      Session::flash('error', 'Problem with your input'); 
     } 
    } 

回答

0

你應該把你刪除成交易

更多在這裏: Laravel Transactions

+0

是的,我們可以在交易這個包起來爲好,但我需要刪除用戶記錄最好的辦法。 –

0

1)通過檢查Auth::id()通過post到您的視圖,以便你不需要檢查用戶是否有權限刪除

2)使你的表單URL(「後/刪除/」。$後> ID)所以你沒有檢查它是否是數字或不

3)Post::find($id)->delete();

+0

在視圖中檢查Auth :: id()是一種很好的做法嗎? 第二,如果用戶將此變爲「url('post/delete /'。$ post-> id)」爲 url('post/delete/3'),那麼我將刪除帖子ID爲3,無論帖子ID 3不屬於用戶。 –

+0

在將數據傳遞到您的控制器之前,您沒有在您的視圖中檢查Auth :: id。 –

+0

在您的視圖中(僅限或完全)檢查此方案並不是最好的方法,因爲如果有人使用不存在的ID進行發佈/刪除/ XXX,則您認爲它們未經檢查就擁有該方案並讓陌生人有能力刪除他們不擁有的模型。在crud命令中對控制器進行簡單的認證和歸屬檢查。 –