欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > gorm的foreignkey和references具体应用

gorm的foreignkey和references具体应用

2025/2/4 21:28:39 来源:https://blog.csdn.net/hotqin888/article/details/145428432  浏览:    关键词:gorm的foreignkey和references具体应用

如果是用gorm建立(迁移)的表,它默认的表名和ID,则不需要专门去使用foreignkey和references,直接用preload来查询即可关联到。

如果是其他比如beego的orm建立的表,则要使用foreignkey和references

foreignkey是外表里的id,比如是`Id`
references是本表中的id,比如是`UserID`

// math模板表——用gorm的_db.AutoMigrate(&MathTemple{})迁移(建立)
type MathTemple struct {gorm.ModelClassID    int64  `json:"classid" gorm:"column:class_id;"`Number     string `json:"number"`UserID     int64  `gorm:"column:user_id;`User       User   `gorm:"foreignkey:Id;references:UserID;"`// MathArticleID uint   `gorm:"column:math_article_id;`MathArticle MathArticle
}// 用户表——用beego orm建立
type User struct {Id            int64Username      string `json:"name",orm:"unique"`Nickname      string
}// math的文章——用gorm的_db.AutoMigrate(&MathArticle{})迁移(建立)
type MathArticle struct {gorm.ModelMathTempleID uint   `json:"tempid" gorm:"column:math_temple_id"`Title        string `json:"title" gorm:"column:title;size:20"`Subtext      string `json:"subtext" gorm:"column:subtext;size:20"`Content      string `json:"html" gorm:"column:content;size:5000"`
}

这里有好几种情况:上面mathtemple表中,User和UserID,当只有UserID而无User的时候,preload查询是查不出User表的。当只有User而无UserID的时候,例如mathtemple表中的matharticle就是不带matharticelid的,也是可以preload查出的,因为mathtemple表里对应有mathtempleid啊。如果后者表里不带mathtempleid,估计就查不出来。

还有,如果mathtemple表里的User,不写`gorm:"foreignkey:Id;references:UserID;"`,或者只写`gorm:"foreignkey:Id;"`不写`"references:UserID;"`,都无法自动迁移(automigrate)!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com