我有两个表:每个用户可以有多个工作users,jobs但一个特定的工作属于一个用户。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 authorFROM jobs AS jINNER JOIN users AS uON j.user_id = u.id在戈姆: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"}如何获取每篇文章的作者数据?
1 回答
斯蒂芬大帝
TA贡献1827条经验 获得超8个赞
查看您需要生成的 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
}
- 1 回答
- 0 关注
- 140 浏览
添加回答
举报
0/150
提交
取消