gpt4 book ai didi

go - 如何将MySQL查询转换为GORM查询

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

我有两个表:usersjobs,其中每个用户可以有多个作业,但是一个特定的作业属于一个用户。

type Job struct {
ID uint `gorm:"primarykey" json:"id"`
Title string `gorm:"type:varchar(255); not null" json:"title"`
Content string `gorm:"not null" json:"content"`
UserID uint `json:"-"`
}

type User struct {
ID uint `gorm:"primarykey" json:"-"`
UUID uuid.UUID `gorm:"type:char(36) not null" json:"-"`
Name string `gorm:"type:varchar(255); not null" json:"name"`
Jobs []Job `json:"-"`
}
我想获得每篇帖子的作者。
以下查询有效:
SELECT j.id, j.title, j.content, u.name AS author
FROM jobs AS j
INNER JOIN users AS u
ON j.user_id = u.id
在Gorm:
func (jobRepo repository) FindAll() []entity.Job {
var jobs []entity.Job
jobRepo.db.Find(&jobs)

// how do we handle the rest?

return jobs
}
我必须返回以下JSON响应:
job_id: <random_id>
job_title: "Test Title Content",
job_content: "Test Job Content",
author: {
name: "Test User Name"
}
如何获得每个帖子的作者数据?

最佳答案

查看您需要生成的JSON响应,您可能首先将User字段添加到Job结构中,如下所示:

type Job struct {
ID uint `gorm:"primarykey" json:"id"`
Title string `gorm:"type:varchar(255); not null" json:"title"`
Content string `gorm:"not null" json:"content"`
UserID uint `json:"-"`
User User `json:"author"`
}
另外,只需在您的repo方法中进行很小的更改即可加载此代码。我添加了错误检查,因为您应该始终进行错误检查。
func (jobRepo repository) FindAll() ([]entity.Job, error) {
var jobs []entity.Job
tx := jobRepo.db.Preload("User").Find(&jobs)

return jobs, tx.Error
}

关于go - 如何将MySQL查询转换为GORM查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65196328/

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