Day08:GORM快速入门07 has many| 青训营

简介: Day08:GORM快速入门07 has many| 青训营

导读

本套笔记是学习完Gin框架之后的下一个阶段,通过Gin框架我们可以很方便的和前端进行交互,下一步就是和数据库进行交互,这就需要使用GORM。本套笔记就是带你快速上手GORM,学习完这个之后就可以完成大项目的开发了,后续还会进行大项目的讲解开发,制作不易,喜欢的就点个关注吧。

本套课程基于GORM 指南 | GORM - The fantastic ORM library for Golang, aims to be developer friendly.进行讲解,是对这个的补充解释说明。

注意

代码详解大部分是注释的形式给出,请留意代码注释。

GORM介绍

GORM(Go Object Relational Mapping)是一个在 Go 语言中使用的优秀的 ORM(对象关系映射)库。它提供了简单且强大的 API,使开发人员能够轻松地与数据库进行交互

Has Many

has many 与另一个模型建立了一对多的连接。 不同于 has one,拥有者可以有零或多个关联模型。

例如,您的应用包含 user 和 credit card 模型,且每个 user 可以有多张 credit card。

// User 有多张 CreditCard,UserID 是外键
type User struct {
  gorm.Model
  CreditCards []CreditCard
}
type CreditCard struct {
  gorm.Model
  Number string
  UserID uint
}

检索

// 检索用户列表并预加载信用卡
func GetAll(db *gorm.DB) ([]User, error) {
    var users []User
    err := db.Model(&User{}).Preload("CreditCards").Find(&users).Error
    return users, err
}

重写外健

与之前一样的写法,只需要改变结构体

type User struct {
  gorm.Model
  CreditCards []CreditCard `gorm:"foreignKey:UserRefer"`
}
type CreditCard struct {
  gorm.Model
  Number    string
  UserRefer uint
}

重写引用

与之前一样的写法,只需要改变结构体

type User struct {
  gorm.Model
  MemberNumber string
  CreditCards  []CreditCard `gorm:"foreignKey:UserNumber;references:MemberNumber"`
}
type CreditCard struct {
  gorm.Model
  Number     string
  UserNumber string
}

外键约束

与之前一样的写法,只需要改变结构体

type User struct {
  gorm.Model
  CreditCards []CreditCard `gorm:"constraint:OnUpdate:CASCADE,OnDelete:SET NULL;"`
}
type CreditCard struct {
  gorm.Model
  Number string
  UserID uint
相关文章
|
9月前
|
存储 关系型数据库 MySQL
|
前端开发 Go API
Day07:GORM快速入门04 查找| 青训营
Day07:GORM快速入门04 查找| 青训营
|
前端开发 Go API
Day08:GORM快速入门06 属于| 青训营
Day08:GORM快速入门06 属于| 青训营
|
前端开发 Go API
Day08:GORM快速入门08 many to many| 青训营
Day08:GORM快速入门08 many to many| 青训营
|
存储 前端开发 Go
Day08:GORM快速入门06 HasOne| 青训营
Day08:GORM快速入门06 HasOne| 青训营
|
关系型数据库 MySQL Go
Day06:GORM快速入门01 入门指南| 青训营
Day06:GORM快速入门01 入门指南| 青训营
|
前端开发 Go API
Day06:GORM快速入门03 删除| 青训营
Day06:GORM快速入门03 删除| 青训营
|
存储 前端开发 数据库连接
Day07:GORM快速入门05 更新| 青训营
Day07:GORM快速入门05 更新| 青训营
|
前端开发 关系型数据库 MySQL
Day06:GORM快速入门02 增加| 青训营
Day06:GORM快速入门02 增加| 青训营
|
前端开发 Go API
Day09:GORM快速入门09 关联模式| 青训营
Day09:GORM快速入门09 关联模式| 青训营