golang gorm更新关联保存

ehr*_*974 6 go go-gorm

有没有办法在保存对象时自动删除关联?

这样的事情:

type Parent struct {
    gorm.Model
    Name string
    Children []*Child
}

type Child struct {
    gorm.Model
    Name string
    ParentID uint
}

func myFunc(db *gorm.DB) {
    p := &Parent{Name: "foo", Children:[]*Child{ {Name:"Bar"}, {Name:"Foobar"}}}
    db.Save(&p)

    p.Children = p.Children[1:]
    db.Save(&p)  // both children still exist in the database. i'd like the first child to be deleted here
}
Run Code Online (Sandbox Code Playgroud)

`

我发现了db.Model(&Parent).Association("Children").Clear()的一些技巧,但只是将ParentID值设置为NULL,而不是删除记录.有一个简单的方法吗?

提前谢谢了 :)

Tha*_*hHH 1

我认为您只需使用物理批量删除,如下代码:

db.Unscoped().Where("parent_id = ?", p.ID).Delete(Child{})
Run Code Online (Sandbox Code Playgroud)

希望这有帮助。