如何删除相关值?

时间:2019-10-17 13:36:02

标签: laravel

新手在这里拉拉维尔!我有类别表和构成表两者都相关,每个类别都有许多构成,每个构成都属于类别,我要做的是每次删除一个类别时,也必须删除与该类别相关的所有构成。 / p>

这是我的类别模型

class Category extends Model
{
    function formations()
    {
        return $this->hasMany('App\Formation');
    }

    protected $fillable =['name','description'];

}

这是我的编队模型

class Formation extends Model
{
    function category()
    {
        return $this->belongsTo('App\Category',"category_id");
    }
}

这就是我删除“我的类别”的方式

public function destroy(Category $category)
{
    $category->delete();
    return redirect()->route('category.index');
}

我应该添加什么代码,以便在删除任何类别时也删除与之相关的所有编排?我希望我的问题很清楚,谢谢。

1 个答案:

答案 0 :(得分:1)

只需删除所有关系,然后再使用$category->formations()->delete();删除类别

或者您可以通过听删除事件将其添加到模型中

class Category extends Eloquent
{
    public static function boot() {
        parent::boot();

        static::deleting(function($category) {
             $category->formations()->delete();
        });
    }

    public function formations()
    {
        return $this->has_many('Formation');
    }
}