我有兩個表:每個用戶可以有多個工作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 關注
- 162 瀏覽
添加回答
舉報
0/150
提交
取消