关联
多态
登录后可跨设备保存划线和私人笔记登录
多态关联
GORM 支持 has one 和 has many 的多态关联,它会将被拥有的实体的表名保存到多态类型的字段中,主键值保存到多态字段中。
默认情况下,polymorphic:<value> 会以 <value> 作为列类型和列 ID 的前缀。
该值为表名的复数形式。
type Dog struct {
ID int
Name string
Toys []Toy `gorm:"polymorphic:Owner;"`
}
type Toy struct {
ID int
Name string
OwnerID int
OwnerType string
}
db.Create(&Dog{Name: "dog1", Toys: []Toy{{Name: "toy1"}, {Name: "toy2"}}})
你可以使用以下 GORM 标签分别指定多态属性:
polymorphicType:指定列类型。polymorphicId:指定列 ID。polymorphicValue:指定类型的值。
type Dog struct {
ID int
Name string
Toys []Toy `gorm:"polymorphicType:Kind;polymorphicId:OwnerID;polymorphicValue:master"`
}
type Toy struct {
ID int
Name string
OwnerID int
Kind string
}
db.Create(&Dog{Name: "dog1", Toys: []Toy{{Name: "toy1"}, {Name: "toy2"}}})
在这些示例中,我们使用的是 has-many 关系,但同样的原则也适用于 has-one 关系。
评论
登录后参与评论
正在加载评论…
KnowForge