go gorm一对多has many

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

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

  1. 定义model
// 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. 建表以及数据插入
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
今日推荐