Belongs ToBelongs Tobelongs to 会与另一个模型建立了一对一的连接。 这种模型的每一个实例都“属于”另一个模型的一个实例。例如,您的应用包含 user 和 company,并且每个 user 都可以分配给一个 company// `Us...
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 可以通过 Preload、Joins 预加载 belongs to 关联的记录,查看 预加载 获取详情
外键约束
你可以通过为标签 constraint 配置 OnUpdate、OnDelete 实现外键约束,在使用 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的一对一
基础教程推荐
- Swift使用表格组件实现单列表 2023-07-08
- 详解Golang中NewTimer计时器的底层实现原理 2023-07-25
- R语言中corrplot标题居中及eps格式输出 2022-12-08
- Swift实现表格视图单元格多选 2023-07-08
- swift中自定义正则表达式运算符=~详解 2023-07-06
- R语言学习ggplot2绘制统计图形包全面详解 2022-12-08
- 用汇编语言实现从1加到100的方法(1+2+...+100) 2023-07-06
- 第02部分 Go开发学习 第3章 计算机组成原理快速扫盲 2023-09-05
- 汇编实现的memcpy和memset的方法 2023-07-06
- R语言数据结构之矩阵、数组与数据框详解 2022-12-18
