web-dev-qa-db-fra.com

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

J'ai un problème mineur avec Laravel 4. J'aimerais utiliser la méthode delete() sur un enregistrement mais pour une raison quelconque, il ne supprime pas réellement l'enregistrement . destroy() le fait, 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);
        }
35
user347284
  • destroy est la méthode correcte pour supprimer directement une entité (via un objet ou un modèle).

Exemple:

$teetime = Teetime::where('date', '=', $formattedDate)->firstOrFail();
$teetime->destroy();
  • delete ne peut être appelé que dans le générateur de requêtes

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 de suppression sur un ensemble de modèles:

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

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

57
phoops