我尝试使用golang gorm在(my)sql表中创建自引用。目前我的代码看起来像这样:
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来建立这种关系吗?
非常感谢提前:)
答案 0 :(得分:3)
幸运的是,gorm最近添加了这个功能(参考:here)。
在你的情况下应该是这样的:
type Person struct {
gorm.Model
Name string
Children []*Person `gorm:"many2many: children;association_jointable_foreignkey:children_id"`
}