Open
Description
Description
目前Scan不支持将查询的某个字段结果直接反序列化至指定变量,如下:
案例表结构
type User struct {
Id int64
Username string
Balance decimal.Decimal
State bool
}
1、
var balance decimal.Decimal
err := db.Model("user").Fields("balance").Where("id", 1).Scan(&balance)
2、
var totalBalance decimal.Decimal
err := db.Model("user").FieldSum("balance").WhereIn("id", []int64{1,2,3,4,5}).Scan(&totalBalance)
3、
var username string
err := db.Model("user").Fields("username").Where("id", 1).Scan(&username)
4、
var ids []int64
err := db.Model("user").Fields("id").Where("state", true).Scan(&ids)
我尝试过封装ValueScan,但是当需要承接数据的变量为基本数据类型的变量时还是存在问题,所以我关闭了这个PR
var balance decimal.Decimal
val, err := db.Model("user").Fields("balance").Where("id", 1).Value()
val.Scan(&balance) //此时,balance 能够获取到正确的值
var id int64
val, err := db.Model("user").Fields("id").Where("id", 1).Where("state", true).Value()
err = val.Scan(&id) //此时,id 不能能获取到正确的值,err不为空,不支持基本数据类型
Additional
No response