此问题已在此处有答案:
Automatically deleting related rows in Laravel (Eloquent ORM)(18回答)
昨天关门了。
我有一个级联删除的例子,但它看起来太大和复杂,有没有办法缩短这段代码?
protected static function boot()
{
parent::boot();
static::deleted(function ($parent) {
// $versions = $parent->game_versions();
$versions = $parent->game_versions;
foreach($versions as $version){
$version->delete();
}
});
}
有人能帮我吗?
3条答案
按热度按时间pn9klfpd1#
你好,你可以使用CASCADE DELETE,你可以修改你的迁移中的外键约束,创建game_versions表,以包含值为“cascade”的onDelete方法,如下所示:
这将确保当删除游戏记录时,具有相应game_id的所有相关GameVersion记录也将从数据库中删除。
du7egjpx2#
例如,以下代码将在删除游戏时擦除所有游戏版本:
mwg9r5ms3#
你可以把foreach简化成这样。