2017-04-14 1 views
1

Voici comment je supprime un enregistrement, pouvez-vous s'il vous plaît me suggérer quelle est la meilleure approche pour supprimer un enregistrement.La meilleure façon de supprimer un enregistrement de modèle relatif à l'utilisateur

 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'); 
     } 
    } 

Répondre

0

Vous devez mettre votre supprimer dans une transaction

Plus ici: Laravel Transactions!

+0

Oui, nous pouvons conclure ce dans les transactions aussi bien, mais je dois meilleure façon de supprimer l'enregistrement de l'utilisateur. –

0

1) passer post à votre vue en vérifiant Auth::id() de sorte que vous ne avez pas besoin de vérifier si l'utilisateur est autorisé à supprimer

2) faire de votre forme url (post/supprimer/'. $ Post> id) de sorte que vous n'avez pas à vérifier si elle est numérique ou non

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

+0

Il est recommandé de vérifier Auth :: id() dans les vues? et d'autre part, si l'utilisateur change cela à "url ('post/delete /'. $ Post-> id)" à url ('post/delete/3'), alors je supprimerai le message avec id 3, quel que soit l'identifiant 3 n'appartient pas à l'utilisateur. –

+0

vous ne vérifiez pas Auth :: id sur votre vue dans votre contrôleur avant de passer des données à cet endroit. –

+0

Il n'est pas préférable de vérifier ce scénario dans vos vues (uniquement ou pas du tout), car si quelqu'un va à la publication/supprimer/XXX avec un ID qui n'est pas propre, vous supposez qu'il le possède sans vérifier et donnent la possibilité aux étrangers de supprimer des modèles qu'ils ne possèdent pas. Faites une vérification simple d'authenticité et d'appartenance dans votre contrôleur sur les commandes crud. –