Heim > Backend-Entwicklung > PHP-Tutorial > Wie kann ich verwandte Zeilen automatisch löschen, wenn ich ein Modell in Laravel Eloquent lösche?

Wie kann ich verwandte Zeilen automatisch löschen, wenn ich ein Modell in Laravel Eloquent lösche?

Barbara Streisand
Freigeben: 2024-12-14 11:05:10
Original
424 Leute haben es durchsucht

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

Automatisches Löschen verwandter Zeilen in Laravel mit Eloquent ORM implementieren

Die Standardmethode delete() von Eloquent ORM löscht eine einzelne Zeile. Um diese Funktionalität zu erweitern und verwandte Zeilen automatisch zu löschen, verwenden Sie Eloquent-Ereignisse.

Problem:
Wie können Sie eine Zeile anhängen, wenn Sie sie mit $user->delete() löschen? ein automatischer Rückruf zum Löschen verwandter Zeilen, z $this->photo()->delete()?

Lösung:

Das Ereignis löschen wird vor dem Löschen ausgelöst( )-Methode aufgerufen wird. Durch Definieren eines Ereignishandlers innerhalb der Modellklasse können Sie beim Löschen Bereinigungsaufgaben ausführen.

<?php

namespace App\Models;

use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    public function photos()
    {
        return $this->has_many('Photo');
    }
    
    // This method is called before delete() is called
    protected static function booted () {
        static::deleting(function (User $user) {
            $user->photos()->delete();
        });
    }
}
Nach dem Login kopieren

Zusätzliche Hinweise:

  • Verwenden Sie die Booted-Methode, um Es wird empfohlen, Ereignishandler zu deklarieren.
  • Erwägen Sie, die Bereinigungsaktionen in eine Transaktion einzuschließen, um die Referenzierung aufrechtzuerhalten Integrität.

Das obige ist der detaillierte Inhalt vonWie kann ich verwandte Zeilen automatisch löschen, wenn ich ein Modell in Laravel Eloquent lösche?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage