allez gorm un à plusieurs en a plusieurs

has many établit une connexion un-à-plusieurs avec un autre modèle. Contrairement à un modèle unique, le propriétaire peut avoir zéro ou plusieurs modèles associés.

Par exemple, votre application contient des modèles d'utilisateur et de carte de crédit, et chaque utilisateur peut posséder plusieurs cartes de crédit.

  1. Définir le modèle
// User 有多张 CreditCard,UserID 是外键
type User struct {
    
    
	gorm.Model
	Name       string
	CreditCard []CreditCard `gorm:"foreignKey:UserID"` // 使用 UserName 作为外键
}

type CreditCard struct {
    
    
	gorm.Model
	Number string
	UserID uint //存储user表的主键id
}

  1. Créer des tableaux et insérer des données
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(&User{
    
    }, &CreditCard{
    
    })
}


package main

import (
	"ellis/mysqltest"
)

func main() {
    
    
	mysqltest.Initdb()
	// // 创建数据库
	mysqltest.InitTable()
	var value []mysqltest.CreditCard = []mysqltest.CreditCard{
    
    {
    
    Number: "123"}, {
    
    Number: "234"}}

	mysqltest.Create(&mysqltest.User{
    
    Name: "ellis", CreditCard: value})
}

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

おすすめ

転載: blog.csdn.net/weixin_43632687/article/details/132427152