gorm 关联
ExportComposeOrderGoods []ExportComposeOrderGoods `json:"exportComposeOrderGoods" gorm:"ForeignKey:OrderNo;references:OrderNo;AssociationForeignKey:OrderNo"` `gorm:"foreignKey:关联表的结构体字段;references:当前表的结构体字段;`
模型
flame/gorm/model/user.go package model import ( "github.com/jinzhu/gorm" "time" ) type User struct { gorm.Model Name string Age uint Birthday *time.Time //数据库字段值可以为NULL 时得使用指针,否则可以不用指针 Email string CreditCard *CreditCard //避免循环嵌套,使用指针形式 //has one 模型 //不填foreignkey,默认就是【此字段type】【CreditCard】+primarykey【ID】 为【CreditCardID】 //不填association_foreignkey,默认就是【此字段type】【User】的 primarykey【ID】, //即`gorm:"foreignkey:CreditCardID;association_foreignkey:ID"` CreditCardID uint //为foreignkey,在本struct内 ,指向拥有哪个信用卡 //foreignkey【CreditCard】.【CreditCardID】———————>association_foreignkey【CreditCard】.【ID】 Phones []Phone `gorm:"foreignkey:UserID"` //has many 模型 必须要配置foreignkey //不填association_foreignkey,默认就是【此struct】【User】的 primarykey【ID】, //即`gorm:"foreignkey:UserID;association_foreignkey:ID"` //association_foreignkey【User】.【ID】———————>foreignkey【Phone】.【UserID】 Languages []Language `gorm:"many2many:user_language;"` //many to many 模型 必须要配置many2many //关联表为user_language //不填foreignkey,默认就是【此struct】【User】的 primarykey【ID】 //不填association_foreignkey,默认就是【此字段type】【Language】的 primarykey【ID】 //不填jointable_foreignkey,默认就是【此struct】【User】+primarykey【ID】 为【UserID】 转换成【user_id】 //不填association_jointable_foreignkey,默认就是【此字段type】【Language】+primarykey【ID】 为【LanguageID】 转换成【language_id】 //foreignkey【User】.【ID】———————>jointable_foreignkey【user_language】.【user_id】 //association_jointable_foreignkey【user_language】.【language_id】———————>不填association_foreignkey【Language】.【I】 //多对多 存在循环时使用指针,否则可以不用指针,避免循环嵌套 } flame/gorm/model/creditCard.go package model import ( "github.com/jinzhu/gorm" ) type CreditCard struct { gorm.Model Number string User *User //避免循环嵌套,使用指针形式 //belong to模型 //不填foreignkey,默认就是【此字段type】【User】+primarykey【ID】 为【UserID】 //不填association_foreignkey,默认就是此字段type【User】的 primarykey【ID】, //即`gorm:"foreignkey:UserID;association_foreignkey:ID"` UserID int //为foreignkey, 在本struct内 ,指向归属哪个User //foreignkey【CreditCard】.【UserID】———————>association_foreignkey【User】.【ID】 } flame/gorm/model/phone.go package model import ( "github.com/jinzhu/gorm" ) type Phone struct { gorm.Model Number string User User //belong to模型 //不填foreignkey,默认就是此字段type【User】+primarykey【ID】 为【UserID】 //不填association_foreignkey,默认就是此字段type【User】的 primarykey【ID】, //即`gorm:"foreignkey:UserID;association_foreignkey:ID"` UserID int //为foreignkey, 在本struct内 ,指向归属哪个User //foreignkey【CreditCard】.【UserID】———————>association_foreignkey【User】.【ID】 }