本文主要是介绍golang (Grom)关于foreignKey的使用2种方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
第一种,副表使用foreignKey指向主表特定字段
type Car struct {ID int `gorm:"column:id;primary_key;AUTO_INCREMENT"`PlateID string `gorm:"column:plate_id;NOT NULL"` // 车牌号CarSkuID int `gorm:"column:car_sku_id;NOT NULL"` // 车辆sku idDriverID int `gorm:"column:driver_id;default:0"` // 司机idDrivingCode string `gorm:"column:driving_code;NOT NULL"` // 行驶证号码OperateCode string `gorm:"column:operate_code;NOT NULL"` // 运营证件号码PassType int `gorm:"column:pass_type;NOT NULL"` // 通行证类型PassCode string `gorm:"column:pass_code;NOT NULL"` // 通行证号码Status int `gorm:"column:status;default:0;NOT NULL"` // 0=未启用, 1=启用CreatedAt time.Time `gorm:"column:created_at;default:CURRENT_TIMESTAMP;NOT NULL"`UpdatedAt time.Time `gorm:"column:updated_at;default:CURRENT_TIMESTAMP;NOT NULL"`DeletedAt time.Time `gorm:"column:deleted_at"`CarSku CarSku `gorm:"foreignKey:CarSkuID"`Drivers Drivers `gorm:"foreignKey:DriverID"`
}
type CarSku struct {ID int `gorm:"column:id;primary_key;AUTO_INCREMENT"`Colour string `gorm:"column:colour;NOT NULL"` // 车辆颜色Type string `gorm:"column:type;NOT NULL"` // 车辆类型Specs float64 `gorm:"column:specs;default:0.00;NOT NULL"` // 车辆规格 (m)CarryWeight int `gorm:"column:carry_weight;default:0;NOT NULL"` // 核载质量(kg)Volume float64 `gorm:"column:volume;default:0.00;NOT NULL"` // 容积(m³)Status int `gorm:"column:status;default:0;NOT NULL"` // 0=未启用, 1=启用CreatedAt time.Time `gorm:"column:created_at;default:CURRENT_TIMESTAMP;NOT NULL"`UpdatedAt time.Time `gorm:"column:updated_at;default:CURRENT_TIMESTAMP;NOT NULL"`DeletedAt time.Time `gorm:"column:deleted_at"`
}
func (m *CarSku) TableName() string {return "car_sku"
}
type Drivers struct {ID int64 `gorm:"column:id;primary_key;AUTO_INCREMENT"` // 自动编号Name string `gorm:"column:name"` // 司机姓名Mobile string `gorm:"column:mobile;NOT NULL"` // 电话号码IdentityCard string `gorm:"column:identity_card;NOT NULL"` // 身份证号码DriversCode string `gorm:"column:drivers_code;NOT NULL"` // 驾驶证号码Province string `gorm:"column:province"`City string `gorm:"column:city"`Area string `gorm:"column:area"`Town string `gorm:"column:town"`Address string `gorm:"column:address"`CarID int `gorm:"column:car_id;default:0;NOT NULL"` // 市场idStatus int `gorm:"column:status;default:0;NOT NULL"` // 0=未启用, 1=启用CreatedAt time.Time `gorm:"column:created_at"` // 创建时间UpdatedAt time.Time `gorm:"column:updated_at"` // 更新时间DeletedAt time.Time `gorm:"column:deleted_at"` // 删除时间
}func (m *Drivers) TableName() string {return "sl_drivers"
}
第一种效果:
第二种,副表id采用主表id
type Car struct {ID int `gorm:"column:id;primary_key;AUTO_INCREMENT"`PlateID string `gorm:"column:plate_id;NOT NULL"` // 车牌号CarSkuID int `gorm:"column:car_sku_id;NOT NULL"` // 车辆sku idDriverID int `gorm:"column:driver_id;default:0"` // 司机idDrivingCode string `gorm:"column:driving_code;NOT NULL"` // 行驶证号码OperateCode string `gorm:"column:operate_code;NOT NULL"` // 运营证件号码PassType int `gorm:"column:pass_type;NOT NULL"` // 通行证类型PassCode string `gorm:"column:pass_code;NOT NULL"` // 通行证号码Status int `gorm:"column:status;default:0;NOT NULL"` // 0=未启用, 1=启用CreatedAt time.Time `gorm:"column:created_at;default:CURRENT_TIMESTAMP;NOT NULL"`UpdatedAt time.Time `gorm:"column:updated_at;default:CURRENT_TIMESTAMP;NOT NULL"`DeletedAt time.Time `gorm:"column:deleted_at"`
}type CarJoinCarSkuJoinDrivers struct {CarCarSku []*CarSku `gorm:"foreignKey:ID"`//这个ID是指carSku表的Id你如果直接写CarSkuID会报错,编译找不到对应的字段Drivers []*Drivers `gorm:"foreignKey:ID"`
}func (m *Car) TableName() string {return "sl_car"
}
第二种效果图:
这篇关于golang (Grom)关于foreignKey的使用2种方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!