// 开始关联模式 var user User db.Model(&user).Association("Languages") // `user` 是源模型,它的主键不能为空 // 关系的字段名是 `Languages` // 如果匹配了上面两个要求,会开始关联模式,否则会返回错误 db.Model(&user).Association("Languages").Error
你可以在删除记录时通过 Select 来删除具有 has one、has many、many2many 关系的记录,例如:
// 删除 user 时,也删除 user 的 account db.Select("Account").Delete(&user)
// 删除 user 时,也删除 user 的 Orders、CreditCards 记录 db.Select("Orders", "CreditCards").Delete(&user)
// 删除 user 时,也删除用户所有 has one/many、many2many 记录 db.Select(clause.Associations).Delete(&user)
// 删除 users 时,也删除每一个 user 的 account db.Select("Account").Delete(&users)
NOTE: Associations will only be deleted if the deleting records’s primary key is not zero, GORM will use those primary keys as conditions to delete selected associations
// DOESN'T WORK db.Select("Account").Where("name = ?", "jinzhu").Delete(&User{}) // 会删除所有 name=`jinzhu` 的 user,但这些 user 的 account 不会被删除
db.Select("Account").Where("name = ?", "jinzhu").Delete(&User{ID: 1}) // 会删除 name = `jinzhu` 且 id = `1` 的 user,并且 user `1` 的 account 也会被删除
db.Select("Account").Delete(&User{ID: 1}) // 会删除 id = `1` 的 user,并且 user `1` 的 account 也会被删除