定义表间关系很麻烦

时间:2019-03-16 08:13:56

标签: go go-gorm

目标

我正在尝试与Gorm建立一个简单的has_many关联:一个人有很多宠物。

问题

当我尝试保存Person模型时,看到以下错误。

  

不受支持的类型[] model.Pet,结构的一部分

详细信息

假定我要保存一个包含许多Person的{​​{1}}。

Pets

然后我尝试创建这两个模型。

type Person struct {
    UUID `gorm:"PRIMARY_KEY" json:"uuid"`
    Pet  []Pet `gorm:"foreignkey:PersonUUID:association_foreignkey:UUID"`
}

type Pet struct {
    UUID `gorm:"PRIMARY_KEY" json:"uuid"`
  PersonUUID string
}

然后我得到以下错误。

personUUID := "dcf4b3c6-d94c-4b2c-9d66-1cbaedd2cc44"
pets := []Pet{
  Pet{
    UUID: "..",
    PersonUUID: personUUID,
  }
}
person := Person{
  UUID: personUUID,
  Pet: Pet,
}

db.Where("uuid = ?", person.UUID).Update(&person)

知道为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

我发现只有在您使用Update而不是Save时才会发生。 这很奇怪,因为两者应该以相同的方式工作,除了Update将尝试保存不同的字段,而Save将用新值替换当前值。