例如,您的应用包含 user 和 credit card 模型,且每个 user 可以有多张 credit card。
例如,要定义一个属于
User
的模型,则其外键应该是
UserID
。
此外,想要使用另一个字段作为外键,您可以使用
foreignKey
标签自定义它:
type User struct { gorm.Model CreditCards []CreditCard `gorm:"foreignKey:UserRefer"` } type CreditCard struct { gorm.Model Number string UserRefer uint }
为 user 添加 credit card 时,GORM 会将 user 的
ID
字段保存到 credit card 的
UserID
字段。
同样的,您也可以使用标签
references
来更改它,例如:
type User struct { gorm.Model MemberNumber string CreditCards []CreditCard `gorm:"foreignKey:UserNumber;references:MemberNumber"` } type CreditCard struct { gorm.Model Number string UserNumber string }
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" }}})
您可以使用标签
polymorphicValue
来更改多态类型的值,例如:
type Dog struct { ID int Name string Toys []Toy `gorm:"polymorphic:Owner;polymorphicValue:master"` } type Toy struct { ID int Name string OwnerID int OwnerType string } db.Create(&Dog{Name: "dog1" , Toys: []Toy{{Name: "toy1" }, {Name: "toy2" }}})