在 GORM 中与自身的关系

Relation with it self in GORM

我想用 GORM 将一个实体与其自身相关联 我试过这个:

type project struct {
    gorm.Model
    Name     string
    ParentID uint
    projects []project `gorm:"foreignkey:ParentID,association_foreignkey:ID"`
}
    db.Create(&project{Name: "parent", ParentID: 0})
    db.Create(&project{Name: "child", ParentID: 1})
    db.Create(&project{Name: "child1", ParentID: 1})
    var project Project
    var projects []Project
    db.First(&project)
    db.Model(&project).Related(&projects)

但这是错误:

invalid association [] 

我想要的结果是:

{Name:"parent",
    projects:[
        {Name:"child",projects:[]},
        {Name:"child1",projects:[]}
             ]
}

我想说的是我是 golang 的新手:)

将您的 projects 标签更改为此 - gorm:"foreignkey:ParentID" 并使字段本身成为 public。要获得其中包含 children 的 parent,请执行以下操作:

p := &project{}
err := db.Where("name = 'parent'").
          Preload("Projects").
          First(p).Error