gpt4 book ai didi

GORM 连接和结果

转载 作者:行者123 更新时间:2023-12-03 10:01:49 30 4
gpt4 key购买 nike

假设我有 2 个表,它们共享一些列名,例如:

table_1
- id
- created_at
- deleted_at
- name
- color

table_2
- id
- created_at
- deleted_at
- address
- name


当我在 2 个表上运行连接查询时,我得到这样的结果: id, created_at, name, color, id, created_at, deleted_at, address, name
我有 2 个结构类似于我上面描述的模型。现在我想将结果扫描到结果结构中:

type Result struct {
Model1
Model2
}


然后我使用 db.Raw().Scan(&result) .现在的问题:
table_2 的 id 永远不会写入表 2 的结构中,只会写入结果结构中的表 1 的结构中。

我希望我足够清楚地描述了我的问题。
我的问题是:当存在名称相同的列时,如何将 JOIN 查询的结果读取到结果结构中。

最佳答案

我不知道这在 Gorm V1 中是否可行,但在 V2 中你可以使用 Embedded Structs使用前缀来消除两个结果集的歧义,然后您可以适本地命名列以将它们定向到正确的嵌入模型:

type Model1 struct {
ID int `gorm:"primaryKey"`
Value string
}

type Model2 struct {
ID int `gorm:"primaryKey"`
Value string
Color string
}

type Result struct {
Model1 `gorm:"embedded;embeddedPrefix:m1_"`
Model2 `gorm:"embedded;embeddedPrefix:m2_"`
}

res := Result{}
db.Raw(`
SELECT
1 AS m1_id,
'one' AS m1_value,
2 AS m2_id,
'two' AS m2_value,
'rose' AS m2_color
`).Scan(&res)

fmt.Printf("%+v\n", res)
// {Model1:{ID:1 Value:one} Model2:{ID:2 Value:two Color:rose}}

关于GORM 连接和结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52961883/

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