go gorm belong to也就是多对一的情况

多位员工属于同一个公司,一个公司包含多个人,关系放在多的那一部分
belongs to 会与另一个模型建立了一对一的连接。 这种模型的每一个实例都“属于”另一个模型的一个实例。

例如,您的应用包含 user 和 company,并且每个 user 能且只能被分配给一个 company。下面的类型就表示这种关系。 注意,在 User 对象中,有一个和 Company 一样的 CompanyID。 默认情况下, CompanyID 被隐含地用来在 User 和 Company 之间创建一个外键关系, 因此必须包含在 User 结构体中才能填充 Company 内部结构体。

  1. 声明model
type Company struct {
	ID   int
	Name string
	Code string
}

type User struct {
	gorm.Model
	Name         string
	CompanyRefer int
	Company      Company `gorm:"foreignKey:CompanyRefer"`
	// 使用 CompanyRefer 作为外键
}
  1. 创建表
package mysqltest

import (
	"fmt"

	"gorm.io/driver/mysql"
	"gorm.io/gorm"
	"gorm.io/gorm/clause"
)

var db *gorm.DB

func Initdb() {
	dsn := "ellis:ellis@tcp(192.168.214.134:3306)/go_db?charset=utf8mb4&parseTime=True&loc=Local"
	var err error
	db, err = gorm.Open(mysql.Open(dsn), &gorm.Config{})
	if err != nil {
		panic(err)
	}
}

func Create(value interface{}) {
	d := db.Create(value)
	fmt.Printf("d.RowsAffected: %v\n", d.RowsAffected)
}

func InitTable() {
	db.AutoMigrate(&Company{}, &User{})
}
  1. 创建记录
package main

import (
	"ellis/mysqltest"
)

func main() {
	mysqltest.Initdb()
	// // 创建数据库
	mysqltest.InitTable()

	mysqltest.Create(&mysqltest.User{Company: mysqltest.Company{ID: 1, Code: "haha"}, Name: "ellis"})
}

https://gorm.io/zh_CN/docs/belongs_to.html

你可能感兴趣的:(GO,golang,开发语言,后端)