duancai1904 2017-05-18 18:31
浏览 267
已采纳

Golang GORM无效关联

I'm trying to write a very simple belongsTo association with GORM, but with primary keys that isn't Id.

My structs are as such:

type State struct {
    FIPS string `gorm:"type:char(2);primary_key;column:FIPS"`
    Name string `gorm:"not null"`
    Area float64 `gorm:"type:real;not null"`
}

type ZipCode struct {
    ZipCode   string `gorm:"type:char(5);primary_key;"`
    Name      string `gorm:"not null"`
    State     State `gorm:"ForeignKey:StateFIPS;AssociationForeignKey:FIPS"`
    StateFIPS string `gorm:"type:char(2);column:state_FIPS;not null"`
}

and with the following code:

var zc ZipCode
var s State
db.Model(&zc).Related(&s)

I get the error: [2017-05-18 14:26:13] invalid association [] and a find on the zipcode doesn't load the state. Does GORM not like non-Id primary keys or am I missing something?

  • 写回答

1条回答 默认 最新

  • dsizd368332 2017-05-19 07:46
    关注

    With your current code :

    var zc ZipCode
    var s State
    db.Model(&zc).Related(&s)
    

    You are not set anything to your zc variable. so that's why you get an error of invalid association [] with an empty data.

    To fix this you must get the ZipCode data from your database like :

    db.First(&zc, 1) // find ZipCode with id 1.
    

    and then you can associate your zc full code would be :

    var zc ZipCode
    var s State
    
    db.First(&zc, 1) // find ZipCode with id 1.
    db.Model(&zc).Related(&s)
    

    Note : I'm not testing this actual code but I think it would fix the problem.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果