laravel在刪除一篇文章的同時怎麼刪除對應的評論

我們經常會遇到這個需求,文章表和評論表是單獨的表,一篇文章對應多條評論,那麼在刪除一篇文章的同時應該把對應的評論也刪掉。今天記錄一種  Laravel ORM 操作中的事件鉤子的方式來完成這個操作。

刪除動作我們通常這樣實現:

 public function destroy(LetterMsg $letter)
    {

        $letter->delete();
        return $this->Success();
    }

現在加入以下內容:

<?php

namespace App\Http\Model;

use Illuminate\Database\Eloquent\Model;

class LetterMsg extends Model
{
    public function replies(){
        return $this->hasMany(LetterReply::class,'msg_id');
    }
    public static function boot()
    {
        parent::boot(); // TODO: Change the autogenerated stub
        static::deleting(function ($letterMsg){
            $letterMsg->replies()->delete();
        });
    }
}

首先需要在model類中定義模型關聯

然後繼承並實現boot方法註冊deleting事件,使用回調執行相應的動作。

這樣刪除動作只需要一處代碼維護。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章