关于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多对多的关系一节说明,是规范和要求。

0
0

Go微服务入门到容器化实践,落地可观测微服务项目

这可能是你全面提升Go微服务能力的好机会

861 学习 · 322 问题

查看课程

相似问题