gpt4 book ai didi

mysql - 如何使用 gorm 获取多个用户的数据?

转载 作者:IT王子 更新时间:2023-10-29 02:10:02 24 4
gpt4 key购买 nike

数据库:MySql我有两个结构如下:

type Person struct {
gorm.Model
Name string
Address string
}

type Address struct {
gorm.Model
PersonID int
Address []Address
}

我想获取多个有地址的人的数据。我这样试过:

var result []Person
db.Table("persons").Select("persons.id,persons.created_at, persons.updated_at,persons.deleted_at,persons.name,addresses.address").Joins("inner join addresses on addresses.person_id = persons.id").Scan(&result)

我得到了结果:

[
{
ID: 13,
CreatedAt: '2018-03-28T16:25:43+05:30',
UpdatedAt: '2018-03-28T16:28:31+05:30',
DeletedAt: null,
Name: 'roshan',
Address: null
},
{
ID: 13,
CreatedAt: '2018-03-28T16:25:43+05:30',
UpdatedAt: '2018-03-28T16:28:31+05:30',
DeletedAt: null,
Name: 'roshan',
Address: null
},
{
ID: 14,
CreatedAt: '2018-03-28T16:25:43+05:30',
UpdatedAt: '0001-01-01T00:00:00Z',
DeletedAt: null,
Name: 'kunal2',
Address: null
}
];

导出结果为

[
{
ID: 13,
CreatedAt: '2018-03-28T16:25:43+05:30',
UpdatedAt: '2018-03-28T16:28:31+05:30',
DeletedAt: null,
Name: 'roshan',
Address: ['pune', 'nagpur']
},
{
ID: 14,
CreatedAt: '2018-03-28T16:25:43+05:30',
UpdatedAt: '0001-01-01T00:00:00Z',
DeletedAt: null,
Name: 'kunal2',
Address: ['New York']
}
];

最佳答案

首先,您可能应该将模型声明更改为此

type Person struct {
gorm.Model
Name string
Address []Address
}

type Address struct {
gorm.Model
PersonID int
}

然后要预加载关联,您可以使用此查询

var person []Person

err := db.Preload("Address").Find(&person).Error

你的个人参数将是来自具有预加载地址的数据库的结果

关于mysql - 如何使用 gorm 获取多个用户的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49568862/

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