Maison >développement back-end >tutoriel php >Comment supprimer automatiquement les lignes associées lors de la suppression d'un modèle dans Laravel Eloquent ?

Comment supprimer automatiquement les lignes associées lors de la suppression d'un modèle dans Laravel Eloquent ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-10 17:13:16277parcourir

How to Automatically Delete Related Rows When Deleting a Model in Laravel Eloquent?

Suppression automatique des lignes associées dans Laravel (ORM Eloquent)

Dans l'ORM Eloquent de Laravel, lors de la suppression d'un enregistrement à l'aide de $user->delete();, vous pouvez souhaitez supprimer automatiquement les lignes associées, telles que $this->photo()->delete(). Ceci peut être réalisé en utilisant l'événement de suppression dans votre classe de modèle.

Pour configurer le gestionnaire d'événements, suivez ces étapes :

Gestionnaire d'événements de modèle personnalisé

namespace App\Models;

use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    public function photos()
    {
        return $this->has_many('Photo');
    }

    // this is a recommended way to declare event handlers
    protected static function booted()
    {
        static::deleting(function(User $user) { // before delete() method calls this
            $user->photos()->delete();
            // perform additional cleanup if necessary
        });
    }
}

En définissant le gestionnaire d'événements de suppression, chaque fois qu'un modèle utilisateur est supprimé, les modèles photo associés seront également automatiquement supprimés. Pour garantir l'intégrité référentielle, il est recommandé d'encapsuler le processus de suppression dans une transaction.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn