Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Memadam Baris Berkaitan Secara Automatik Apabila Memadam Model dalam Laravel Eloquent?

Bagaimanakah Saya Boleh Memadam Baris Berkaitan Secara Automatik Apabila Memadam Model dalam Laravel Eloquent?

Barbara Streisand
Barbara Streisandasal
2024-12-14 11:05:10425semak imbas

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

Laksanakan Pemadaman Automatik Baris Berkaitan dalam Laravel Menggunakan ORM Fasih

Kaedah delete() standard Eloquent ORM memadamkan satu baris. Untuk melanjutkan fungsi ini dan memadam baris berkaitan secara automatik, gunakan peristiwa Eloquent.

Masalah:
Apabila anda memadamkan baris dengan $user->delete(), bagaimana anda boleh melampirkan panggilan balik automatik untuk memadamkan baris yang berkaitan, seperti $this->photo()->delete()?

Penyelesaian:

Acara memadam dicetuskan sebelum pemadaman( ) kaedah dipanggil. Dengan mentakrifkan pengendali acara dalam kelas model, anda boleh melaksanakan tugas pembersihan selepas pemadaman.

<?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();
        });
    }
}

Nota Tambahan:

  • Menggunakan kaedah but untuk isytihar pengendali acara disyorkan.
  • Pertimbangkan untuk membungkus tindakan pembersihan di dalam transaksi untuk mengekalkan rujukan integriti.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memadam Baris Berkaitan Secara Automatik Apabila Memadam Model dalam Laravel Eloquent?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn