我正在尝试使用 golang gorm 在(我的)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 using unaddressable value”。
有谁知道如何使用 go gorm 来建立这种关系?
提前致谢:)
最佳答案
幸运的是 gorm 最近添加了这个功能(引用:here)。
在你的情况下应该是这样的:
type Person struct {
gorm.Model
Name string
Children []*Person `gorm:"many2many: children;association_jointable_foreignkey:children_id"`
}
关于gorm golang one2many 同一张表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44924692/