第一种,副表使用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 id
DriverID int `gorm:"column:driver_id;default:0"` // 司机id
DrivingCode 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"` // 市场id
Status 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 id
DriverID int `gorm:"column:driver_id;default:0"` // 司机id
DrivingCode 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 {
Car
CarSku []*CarSku `gorm:"foreignKey:ID"`//这个ID是指carSku表的Id你如果直接写CarSkuID会报错,编译找不到对应的字段
Drivers []*Drivers `gorm:"foreignKey:ID"`
}
func (m *Car) TableName() string {
return "sl_car"
}
第二种效果图: