注意: 某些数据库只允许在唯一索引字段上创建外键,如果您在迁移时会创建外键,则需要指定 unique index 标签。4.4 自引用 Many2Many
注意: 自定义连接表要求外键是复合主键或复合唯一索引
NOTE: 对于 many2many 关联,GORM 在创建连接表引用之前,会先 upsert 关联。如果你想跳过关联的 upsert,你可以这样做:5.3 Select/Omit 关联字段下面的代码将跳过创建关联及其引用复制代码
- db.Omit("Languages.*").Create(&user)
复制代码
- db.Omit("Languages").Create(&user)
注意: 只有当记录的主键不为空时,关联才会被删除,GORM 会使用这些主键作为条件来删除关联记录5.6 关联标签(tag)复制代码
- // 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 也会被删除
注意 Join Preload 适用于一对一的关系,例如: has one, belongs to6.3 预加载全部
本文由博客一文多发平台 OpenWrite 发布!
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) | Powered by Discuz! X3.4 |