gorm golang one2many同一张表

问题描述:

我想在使用golang gorm的(my)sql表中创建一个自引用。目前我的代码看起来是这样的:gorm golang one2many同一张表

type Person struct { 
    gorm.Model 
    Name string 
    Children []*Person `gorm:"ForeignKey:ParentID"` 
    ParentID uint 
} 

func main() { 
    /* code to get database connection omitted */ 

    p := &Person{Name:"Sally"} 
    db.Create(p) 

    children := []*Person{ {Name:"Jane", ParentID:p.ID}, 
     {Name:"Tom", ParentID:p.ID}} 

    for _, child := range children { 
     db.Create(child) 
    } 

    var children2 []*Person 

    db.Model(p).Related(children2, "ParentID") 
} 

的代码是一个错误“reflect.Value.Set使用不可寻址值”失败。

有没有人知道如何使用go gorm获得这种关系?

提前感谢:)

幸运格姆近来添加了这个功能(参考:here)。

在你的情况应该是这样的:

type Person struct { 
    gorm.Model 
    Name string 
    Children []*Person `gorm:"many2many: children;association_jointable_foreignkey:children_id"` 
}