如何在 gorm 中与 has many relation 一起工作?

How to work with has many relation in gorm?

import (
    "gorm.io/gorm"
    "gorm.io/driver/postgres"
)

type School struct {
    gorm.Model
    Students        []Student      `json:"students"`
}

type Student struct {
    gorm.Model
    Name            string         `json:"name"`
}

func init() {
    //connect to db first
    conn, err := gorm.Open(postgres.New(postgres.Config{
        DSN:                  dbUri,
        PreferSimpleProtocol: true,
    }), &gorm.Config{})
    if err != nil {
        log.Fatal(err)
    }

    db = conn
    db.AutoMigrate(&Student{}, &School{})
}

创建结构并自动迁移它给我一个错误。你知道这是为什么吗?还有你如何工作在gorm中有很多关系,它在postgres中创建什么样的数据?

错误 - 需要为关系定义一个有效的外键或者需要实现 Valuer/Scanner 接口

您需要向 Student 添加一个 SchoolID 字段。有关完整用法,请参阅 docs here

type Student struct {
    gorm.Model
    SchoolID        uint
    Name            string         `json:"name"`
}

为了回答第二部分,它会为您创建两个表。学校和学生。学生将有一个指向学校 ID 的外键。我会 read the docs 进一步了解它的工作原理。