我有一个由几个结构组成的层次结构type Entry struct { Id int CreatedAt time.Time UpdatedAt time.Time Fields []Field}type SyncField struct { Id int CreatedAt time.Time UpdatedAt time.Time TechnicalName string JsonName string EntryId int Decorators []Decorator}type Decorator struct { Id int CreatedAt time.Time UpdatedAt time.Time Name string Description string SortingOrder int Params string SyncFieldId int}我的数据库创建是这样定义的:db.CreateTable(&Entry{})db.CreateTable(&SyncField{})db.Model(&Entry{}).Related(&SyncField{}, "EntryId")db.CreateTable(&Decorator{})db.Model(&SyncField{}).Related(&Decorator{}, "DecoratorId")一切都很清楚,并且可以正常预加载层次结构的一个“子级别”,如下所示:entry := &Entry{Id: i}iDB.Preload("SyncFields").First(entry)或者field := &SyncField{Id: idf}iDB.Preload("Decorators").First(field)我正在寻找一种使用 GORM 预加载整个层次结构的方法,在其中一个根元素上调用“First()”方法......我想加载一个带有所有相关“字段”的“条目”,我也想要让每个“字段”预装其所有“装饰器”......使用几个“Preload()”函数是不可行的:entry := &Entry{Id: i}iDB.Preload("Decorators").Preload("SyncFields").First(entry)我明白iDB.Preload("child1").Preload("child2").First(root)当 child1 和 child2 都是根的“叶子”时,“”是有效的。所以我的问题是:是否可以用 gorm 来做到这一点,如果是,递归加载完整层次结构的最佳方法是什么?
2 回答
- 2 回答
- 0 关注
- 335 浏览
添加回答
举报
0/150
提交
取消