想做一个地址库的树状查询,
可是这个children在查询sql里有值,但返回值中children返回了nil,是go里的数组/切片有特别的地方导致的?
func GetSysRegionTree(pid string, deep int) (err error, result []data.RegionTree) {
var regionTree []data.RegionTree
// 查询
err = tx.Model(&model.SysRegion{}).Where("pid = ? and enabled = true", pid).Order("id asc", true).Find(®ionTree).Error
if err != nil {
panic(err)
}
for _, region := range regionTree {
children := findChildren(tx, region.ID, deep-1)
fmt.Println("children count = " + strconv.Itoa(len(children)))
// TODO 这儿有个BUG,children没有返回
region.Children = children
}
return err, regionTree
}
// @title 级联查询
func findChildren(tx *gorm.DB, pid string, left int) []data.RegionTree {
var regionTree []data.RegionTree
err := tx.Model(&model.SysRegion{}).Where("pid = ? and enabled = true", pid).Order("id desc", true).Find(®ionTree).Error
if err != nil {
panic(err)
}
if left > 1 {
for _, region := range regionTree {
region.Children = findChildren(tx, region.ID, left-1)
}
}
return regionTree
}
以下是返回数组
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…