gpt4 book ai didi

go - 扫描到 gorm 查询的结构

转载 作者:行者123 更新时间:2023-12-05 00:53:13 24 4
gpt4 key购买 nike

我正在尝试将查询结果扫描到 res 结构中。

代码构建并且查询通过,但结果数组包含如下默认值:

[{0 0 0} {0 0 0} {0 0 0} {0 0 0} {0 0 0} {0 0 0}]

此外,结果数组的长度与查询结果的长度完全相同。当我尝试在 postgres shell 中生成查询时,它会正确返回结果。

代码:

 type res struct{
id int
number int
user_id int
}

func getDataJoin(){
new := []res{}
db.Db.Table("users").Select("users.id as id, credit_cards.number as number, credit_cards.user_id as user_id").Joins("left join credit_cards on credit_cards.user_id = users.id").Scan(&new)
fmt.Println("user\n",new)
}

生成的查询:

SELECT users.id as id, credit_cards.number as number, credit_cards.user_id as user_id FROM "users" left join credit_cards on credit_cards.user_id = users.id

数据库结果

id | number | user_id 
----+--------+---------
1 | 1 | 1
1 | 2 | 1
2 | 1 | 2
2 | 2 | 2
3 | 1 | 3
3 | 2 | 3
(6 rows)

最佳答案

由于go-gorm有一定的convention在命名方面,您可能想尝试两件事。

使您的 res 结构公开可用,并带有公共(public)字段:

type Res struct{
ID int
Number int
UserID int
}

或者,指定列和字段之间的映射:

type res struct{
id int `gorm:"column:id"`
number int `gorm:"column:number"`
user_id int `gorm:"column:user_id"`
}

关于go - 扫描到 gorm 查询的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68100389/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com