go - 在 GORM 中与它自身的关系

标签 go go-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"并公开该领域本身。要让有 child 的 parent 在其中做:

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

关于go - 在 GORM 中与它自身的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61079993/

相关文章:

go - 使用 gin 和 gorm 在 go lang 中对创建和更新操作使用相同的结构

go - unique_index 和 unique 有什么区别?

go - 运行时错误 : invalid memory address or nil pointer dereference (golang-gorm) for POST Request

go - Zap记录器源代码行

我可以使用 & 运算符在函数中获取有效指针,即使该函数已在 golang 中返回

go - golang 中的清除 slice 是否保证垃圾收集?

postgresql - 使用 gorm 从两个表中选择

go - 如何使用反射调用带有指针接收器的结构上的方法?

file - 如何检查Go中是否存在文件?

go - 如何合并查询