Go Gorm pertenece, que es una situación de muchos a uno.

Varios empleados pertenecen a la misma empresa y una empresa contiene varias personas. La relación colocada en la parte que
pertenece establecerá una conexión uno a uno con otro modelo. Cada instancia de dicho modelo "pertenece" a una instancia de otro modelo.

Por ejemplo, su aplicación contiene usuarios y empresas, y cada usuario puede y sólo puede ser asignado a una empresa. Los siguientes tipos representan esta relación. Tenga en cuenta que en el objeto Usuario, hay un CompanyID que es el mismo que Company. De forma predeterminada, CompanyID se utiliza implícitamente para crear una relación de clave externa entre el Usuario y la Compañía y, por lo tanto, debe incluirse en la estructura del Usuario para completar la estructura interna de la Compañía.

  1. declarar modelo
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. Crear mesa
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. Crear registro
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

Supongo que te gusta

Origin blog.csdn.net/weixin_43632687/article/details/132425915
Recomendado
Clasificación