在 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
我想用 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