Отношение к себе в ГОРМ - PullRequest
0 голосов
/ 07 апреля 2020

Я хочу связать сущность с самим собой с помощью 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:)

1 Ответ

0 голосов
/ 07 апреля 2020

Измените свой тег projects на этот - gorm:"foreignkey:ParentID" и сделайте само поле опубликованным c. Чтобы получить родителя с детьми, сделайте:

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