多态关联
GORM 支持多态关联,这意味着一个模型可以属于多个其他模型。
例如,Cat 和 Dog 都可以拥有 Toy。
type Cat struct {
ID int
Name string
Toy Toy `gorm:"polymorphic:Owner;"`
}
type Dog struct {
ID int
Name string
Toy Toy `gorm:"polymorphic:Owner;"`
}
type Toy struct {
ID int
Name string
OwnerID int
OwnerType string
}
注意:多态关联依赖 OwnerID 和 OwnerType 字段。OwnerType 会存储拥有者的表名(默认)。
自定义多态值
你可以使用 polymorphicValue 标签自定义存储在 OwnerType 中的值。
type Cat struct {
ID int
Name string
Toy Toy `gorm:"polymorphic:Owner;polymorphicValue:master_cat"`
}
type Dog struct {
ID int
Name string
Toy Toy `gorm:"polymorphic:Owner;polymorphicValue:master_dog"`
}