// User 用户表 type User struct { Id uint Name string Articles []Article `gorm:"foreignKey:ArticleId"` }
// Article 文章列表 type Article struct { Id uint Title string ArticleId uint User User `gorm:"foreignKey:ArticleId"` 用ArticleId这个字段去关联User这个表 } 修改了Article将UserId作为外键,那么User也要讲外键指向ArticleId
// 清楚外键关联,并不会真正删除数据 // 删除用户,删除相关文章的用户ID var user User DB.Preload("Articles").Take(&user, 2) // 用户关联的文章都先查出来 DB.Model(&user).Association("Articles").Delete(&user.Articles) // 清理用户关联的文章外键 DB.Delete(&user) // 在删除用户,保留文章
4.2 直接删除数据
1 2 3 4 5 6
// 删除 先查出来再删除 var u User DB.Debug().Take(&u) // SELECT * FROM `tb_user` LIMIT 1 DB.Debug().Select("UserInfo").Delete(&u) // DELETE FROM `tb_user_info` WHERE `tb_user_info`.`user_id` = 2 // DELETE FROM `tb_user` WHERE `tb_user`.`id` = 2