首页 文章

golang gorm更新关联保存

提问于
浏览
6

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

像这样的东西:

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
}

`

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

提前谢谢了 :)

1 回答

  • 0

    我想你只是简单地使用物理批量删除,如下面的代码:

    db.Unscoped().Where("parent_id = ?", p.ID).Delete(Child{})
    

    希望这有帮助 .

相关问题