Quelle est la différence entre les méthodes destroy() et delete() dans Laravel?

J'ai un problème mineur avec Laravel 4. Je voudrais utiliser la méthode delete() sur un enregistrement mais pour une raison quelconque, elle ne supprime pas réellement l'enregistrement. destroy() fait, cependant, donc mon code est bon. De plus, si je passe Teetime::where('date', '=', $formattedDate)->count() à ma vue, j'en obtiens un qui est correct. Quel est le problème?

        if($action=="delete") {
            $teetime = Teetime::where('date', '=', $formattedDate)->firstOrFail();
            // for some reason $teetime->delete() doesn't work
            Teetime::destroy($teetime->id);
        }
32
demandé sur Rishabh 2014-03-25 12:27:56

1 réponses

  • destroy est une méthode correcte pour supprimer une entité directement (via un objet ou un modèle).

Exemple:

$teetime = Teetime::where('date', '=', $formattedDate)->firstOrFail();
$teetime->destroy();
  • delete ne peut être appelé que dans query builder

Exemple:

$teetime = Teetime::where('date', '=', $formattedDate)->delete();

De la documentation:

Suppression D'Un Modèle Existant Par Clé

User::destroy(1);

User::destroy(array(1, 2, 3));

User::destroy(1, 2, 3);

Bien sûr, vous pouvez également exécuter une requête sur un ensemble de modèles:

$affectedRows = User::where('votes', '>', 100)->delete();

Plus d'infos: http://laravel.com/docs/eloquent

51
répondu phoops 2014-03-25 08:29:35