gpt4 book ai didi

php - Laravel onDelete 级联多对多关系

转载 作者:行者123 更新时间:2023-11-29 06:48:51 25 4
gpt4 key购买 nike

假设我们有表 A、B 和 C(以及相应的时间戳)

Table ZZ
id
some_fieldZ

Table YY
id
some_fieldY

Table XX
id
b_id
a_id
some_fieldX

Schema::table('XX', function (Blueprint $table) {
$table->foreign('ZZ')->references('id')->on('ZZ')->onDelete('cascade');
$table->foreign('YY')->references('id')->on('YY')->onDelete('cascade');
});

每当删除 YY 或 ZZ 中的记录时,是否可以在不更改其结构(将 FK 之一从一个表切换到另一个表)的情况下相应地删除 XX(也可能是 YY/ZZ)?

编辑:根据 id 添加一行到删除函数其他记录或拥有观察者是我认为只是尝试探索其他可能的方法来实现它的两个解决方案

最佳答案

这是一种解决方案,无需在架构中解决它,而是在模型内部使用boot函数[不会更改任何结构,因此不需要迁移更新]:确保您在父模型中有关系:

public function XXs()
{
return $this->hasMany(Path\to\XX::class, 'id', 'id');
}

然后在您的父模型中插入触发器(我假设:YY 和/或 ZZ)

protected static function boot()
{
parent::boot();

static::deleting(function ($model) {
//Delete XXs first
$model->XXs()->delete();
});
}

关于php - Laravel onDelete 级联多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48344236/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com