如何在 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 进一步了解它的工作原理。
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 进一步了解它的工作原理。