关于product模型
来源:5-7 商品领域 链路追踪使用

慕瓜9063200
2022-12-27
老师你好,product模块中有四个模型,其中两个为:
type Product struct{
ID int64 `gorm:"primary_key;not_null;auto_increment" json:"id"`
ProductName string `json:"product_name"`
ProductSku string `gorm:"unique_index:not_null" json:"product_sku"`
ProductPrice float64 `json:"product_price"`
ProductDescription string `json:"product_description"`
ProductImage []ProductImage `gorm:"ForeignKey:ImageProductID" json:"product_image"`
ProductSize []ProductSize `gorm:"ForeignKey:SizeProductID" json:"product_size"`
ProductSeo ProductSeo `gorm:"ForeignKey:SeoProductID" json:"product_seo"`
}
type ProductImage struct {
ID int64 `gorm:"primary_key;not_null;auto_increment" json:"id"`
ImageName string `json:"image_name"`
ImageCode string `gorm:"unique_index;not_null" json:"image_code"`
ImageUrl string `json:"image_url"`
ImageProductID int64 `json:"image_product_id"`
}
ProductImage []ProductImage gorm:"ForeignKey:ImageProductID" json:"product_image"
,这里的外键对应的是ProductImage 表中的ImageProductID字段,ImageProductID并没有约束,ID才是ProductImage表的主键,那么在客户端这里插入的数据为:
productAdd := &go_micro_service_product.ProductInfo{
ProductName: "imooc",
ProductSku: "cap",
ProductPrice: 1.1,
ProductDescription: "imooc-cap",
ProductCategoryId: 1,
ProductImage: []*go_micro_service_product.ProductImage{
{
ImageName: "cap-image",
ImageCode: "capimage01",
ImageUrl: "capimage01",
},
{
ImageName: "cap-image02",
ImageCode: "capimage02",
ImageUrl: "capimage02",
},
},
ProductSize: []*go_micro_service_product.ProductSize{
{
SizeName: "cap-size",
SizeCode: "cap-size-code",
},
},
ProductSeo: &go_micro_service_product.ProductSeo{
SeoTitle: "cap-seo",
SeoKeywords: "cap-seo",
SeoDescription: "cap-seo",
SeoCode: "cap-seo",
},
}
这里是没有tag中ImageProductID、SizeProductID、SeoProductID三个外键的数据的
ProductImage []ProductImage `gorm:"ForeignKey:ImageProductID" json:"product_image"`
ProductSize []ProductSize `gorm:"ForeignKey:SizeProductID" json:"product_size"`
ProductSeo ProductSeo `gorm:"ForeignKey:SeoProductID" json:"product_seo"`
但是插入以后表中确实有ImageProductID、SizeProductID、SeoProductID这三个字段的数据的,这三个字段没有约束,插入时也没有他们的数据,为什么执行productAdd表中会出现他们的数据?
写回答
1回答
-
Cap
2022-12-27
我回答了你好几个类似的问题发现你gorm的相关知识需要简单看下。这下gorm的写法非老师独创。是基于gorm的规范写的。先看下gorm多对多的关系一节说明,是规范和要求。
00