我有以下结构。
type Relation struct {
gorm.Model
OwnerID uint `json:"ownerID"`
OwnerType string `json:"ownerType"`
Addresses []Address `gorm:"polymorphic:Owner;constraint:OnUpdate:CASCADE,OnDelete:CASCADE;" json:"addresses"`
}
type Company struct {
gorm.Model
Name string `json:"name"`
Relation Relation `gorm:"polymorphic:Owner;constraint:OnUpdate:CASCADE,OnDelete:CASCADE;" json:"relation"`
}
type Address struct {
gorm.Model
OwnerID uint `json:"ownerID"`
OwnerType string `json:"ownerType"`
Country string `json:"country"`
Zip string `json:"zip"`
Number uint `json:"number,string"`
Addition string `json:"addition"`
Street string `json:"street"`
State string `json:"state"`
City string `json:"city"`
}
以及以下处理程序
func UpdateCompany(db *database.Database) fiber.Handler {
return func(c *fiber.Ctx) error {
id, err := IDFromParams(c)
if err != nil {
return c.JSON(responseKit.ParameterMissing())
}
update := new(model.Company)
if err = json.Unmarshal(c.Body(), update); err != nil {
return c.JSON(responseKit.ParsingError())
}
if result := db.Session(&gorm.Session{FullSaveAssociations: true}).Where("id = ?", id).Debug().Updates(update); result.Error != nil {
return c.JSON(responseKit.RecordUpdateError())
}
updated := new(model.Company)
result := db.Preload("Relation.Addresses").
Find(updated, id)
if result.Error != nil {
return c.JSON(responseKit.RecordReadError())
}
return c.JSON(responseKit.RecordUpdatedSuccess(updated))
}
}
我读了
https://gorm.io/docs/associations.html
和
https://github.com/go-gorm/gorm/issues/3487#issuecomment-698303344
但它似乎不起作用。
我使用 rest 客户端使用以下 JSON 调用终结点
{
"name": "yep",
"relation": {
"adresses": [
{
"number": "5"
}
]
}
}
慕的地8271018
相关分类