2017-04-14 71 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命令中对控制器进行简单的认证和归属检查。 –