首页 >> PHP >> 内容页

laravel模型删除时同时删除关联模型

情景:栏目 - 文章, 当删除栏目的同时,删除该栏目下面的所有文章。

方法:使用Eloquent的deleting事件去处理, 当删除栏目时,触发model的deleting事件

在model中重载上级的boot方法,并把处理过程添加到deleting事件

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Category extends Model
{
    protected static function boot()
    {
        parent::boot();

        statc::deleting(function($cat){
            foreach($cat->posts as $post) {
                $post->delete();
            }
        });
    }

    public function posts()
    {
        return $this->hasMany(Post::class, 'cat_id');
    }
}