首頁 >後端開發 >php教程 >Laravel Eloquent 刪除模型時如何自動刪除相關行?

Laravel Eloquent 刪除模型時如何自動刪除相關行?

Barbara Streisand
Barbara Streisand原創
2024-12-14 11:05:10425瀏覽

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

使用 Eloquent ORM 在 Laravel 實現自動刪除相關行

Eloquent ORM 的標準 delete() 方法刪除單行。若要擴充此功能並自動刪除相關行,請利用 Eloquent 事件。

問題:
當您使用 $user->delete()刪除一行時,如何附加用於刪除相關行的自動回調,例如$this->photo()->delete()?

解:

刪除事件在delete(之前觸發) ) 方法被呼叫。透過在模型類別中定義事件處理程序,您可以在刪除時執行清理任務。

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

附加說明:

  • 使用 booted 方法建議聲明事件處理程序。
  • 考慮將清理作業包裝在事務中以保持引用誠信。

以上是Laravel Eloquent 刪除模型時如何自動刪除相關行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn