请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于product模型

老师你好,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表中会出现他们的数据?

正在回答 回答被采纳积分+3

1回答

Cap 2022-12-27 17:21:17

我回答了你好几个类似的问题发现你gorm的相关知识需要简单看下。这下gorm的写法非老师独创。是基于gorm的规范写的。先看下gorm多对多的关系一节说明,是规范和要求。

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号