go gorm が所属する、多対 1 の状況です

複数の従業員が同じ会社に所属し、会社には複数の人間が含まれており、所属する部分に配置されたリレーションシップにより、
別のモデルと 1 対 1 の接続が確立されます。このようなモデルのすべてのインスタンスは、別のモデルのインスタンスに「属します」。

たとえば、アプリケーションにはユーザーと会社が含まれており、各ユーザーは 1 つの会社にのみ割り当てることができます。次のタイプはこの関係を表します。User オブジェクトには Company と同じ CompanyID があることに注意してください。デフォルトでは、CompanyID はユーザーと会社の間に外部キー関係を作成するために暗黙的に使用されるため、会社の内部構造を設定するにはユーザー構造に含める必要があります。

  1. モデルを宣言する
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

おすすめ

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