2017-04-14 2 views
1

이것은 레코드를 삭제하는 방법입니다. 레코드를 삭제하는 가장 좋은 방법은 무엇입니까? Laravel Transactions :사용자 관련 모델 레코드를 삭제하는 가장 좋은 방법

 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

당신은 거래 여기에

더으로 삭제 놓아야합니다!

+0

그래, 우리는 거래에서 이것을 포장 할 수 있습니다뿐만 아니라 있는지 확인할 필요 없다,하지만 난 사용자 레코드를 삭제하는 가장 좋은 방법이 필요합니다. –

0

1)) 그래서 당신은 사용자가

2를 삭제할 수있는 권한이 있는지 확인해야 그나마 Auth::id()을 선택하여보기로 post를 통과 ('포스트// 삭제'양식의 URL을 확인합니다. $ 포스트> 아이디) 그래서 숫자인지

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

+0

뷰에서 Auth :: id()를 확인하는 것이 좋습니다. 두 번째로 사용자가 이것을 "url ('post/delete /'. $ post-> id)"를 url ('post/delete/3')으로 변경하면 게시물 ID와 관계없이 ID가 3 인 게시물을 삭제합니다 3은 사용자의 소유가 아닙니다. –

+0

당신은 거기에 데이터를 전달하기 전에 귀하의 컨트롤러에 귀하의보기에서 확인을 Auth :: ID가 아닙니다. –

+0

누군가가 자신의 ID가 아닌 게시물/삭제/XXX로 이동하면 확인하지 않고 자신의 것으로 가정하고 있기 때문에보기에서이 시나리오를 확인하는 것은 좋지 않습니다 (단 한 가지 또는 모두). 그들은 모르는 모델을 삭제하는 낯선 사람에게 능력을주고 있습니다. 간단한 명령을 사용하여 컨트롤러에서 간단한 인증 및 소속 확인을 수행하십시오. –