GO语言的gorm的一对一

GO语言的gorm的一对一,第1张

概述BelongsToBelongsTobelongsto 会与另一个模型建立了一对一的连接。这种模型的每一个实例都“属于”另一个模型的一个实例。例如,您的应用包含user和company,并且每个user都可以分配给一个company//`User`属于`Company`,`CompanyID`是外键typeUserstruct{ Belongs To
Belongs To

belongs to 会与另一个模型建立了一对一的连接。 这种模型的每一个实例都“属于”另一个模型的一个实例。

例如,您的应用包含 user 和 company,并且每个 user 都可以分配给一个 company

// `User` 属于 `Company`,`CompanyID` 是外键type User struct {  gorm.Model  name      string  CompanyID int  Company   Company}type Company struct {  ID   int  name string}

 

重写外键

要定义一个 belongs to 关系,必须存在外键,默认的外键使用拥有者的类型名加上主字段名

对于上面例子,定义属于 Company 的 User,其外键一般是 CompanyID

此外,GORM 还提供了一种自定义外键的方法,例如:

type User struct {  gorm.Model  name         string  CompanyRefer int  Company      Company `gorm:"foreignKey:CompanyRefer"`  // 使用 CompanyRefer 作为外键}type Company struct {  ID   int  name string}
重写引用

对于 belongs to 关系,GORM 通常使用拥有者的主字段作为外键的值。 对于上面的例子,它是 Company 的 ID 字段

当您将 user 分配给某个 company 时,GORM 会将 company 的 ID 保存到用户的 CompanyID 字段

此外,您也可以使用标签 references 手动更改它,例如:

type User struct {  gorm.Model  name      string  CompanyID string  Company   Company `gorm:"references:Code"` // 使用 Code 作为引用}type Company struct {  ID   int  Code string  name string}
Belongs to 的 CRUD

查看 关联模式 获取 belongs to 相关的用法

预加载

GORM 可以通过 PreloadJoins 预加载 belongs to 关联的记录,查看 预加载 获取详情

外键约束

你可以通过为标签 constraint 配置 OnUpdateOnDelete 实现外键约束,在使用 GORM 进行迁移时它会被创建,例如:

type User struct {  gorm.Model  name      string  CompanyID int  Company   Company `gorm:"constraint:OnUpdate:CASCADE,OnDelete:SET NulL;"`}type Company struct {  ID   int  name string}

 





总结

以上是内存溢出为你收集整理的GO语言的gorm的一对一全部内容,希望文章能够帮你解决GO语言的gorm的一对一所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1241770.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存