GoFrame避坑之dao.DB.ALL()
Posted StaticAuto
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GoFrame避坑之dao.DB.ALL()相关的知识,希望对你有一定的参考价值。
这里使用的数据库是postgres
在使用GoFrame对数据库进行操作时,例如
dao.Space.Where(dao.Space.Columns.ProjectId,res.ProjectId).All()
即查询ProjectId字段值为res.ProjectId的所有值,返回一个数组
当该表存在bool类型的值时,偶尔会发现,无论我们数据库里存的是什么,取出来都是true
解决方法1
使用dao.DBname.Where(****).M.ALL()
方法进行查询,该方法会返回一个Result []Record
类型的返回值,即一个数组
顺便一提,如果此值时返回给web等作为接口数据,完全可以直接返回,只需要将返回值定义为interface{}
即可,如果需要取值进行进一步操作,可对该返回值进行变量,例如
A ,err :=dao.Space.Where(xxxx).M.All()
if err != nil{
return err
}
for _,v := range A{
sp := new(B) //B结构体与表结构对应,在Goframe一般为model.表名
err := v.Struct(sp)
if err != nil {
glog.Println(err)
return err
}
}
解决方法2
GF的版本目前进行了维护升级,从v1.15.5开始似乎修复了此问题(盲猜,因为楼主开始使用的是v1.15.4)
GF的强大之处在于它有许多的开发者维护,相信选择GF框架还是一个不错的选择
以上是关于GoFrame避坑之dao.DB.ALL()的主要内容,如果未能解决你的问题,请参考以下文章