我有兩個表:每個用戶可以有多個工作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:"-"`}我想和它的作者一起發(fā)布每一篇文章。以下查詢有效: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 響應(yīng):job_id: <random_id>job_title: "Test Title Content",job_content: "Test Job Content",author: { name: "Test User Name"}如何獲取每篇文章的作者數(shù)據(jù)?
1 回答
斯蒂芬大帝
TA貢獻(xiàn)1827條經(jīng)驗 獲得超8個贊
查看您需要生成的 JSON 響應(yīng),您可以先將User字段添加到Job結(jié)構(gòu)中,如下所示:
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 方法中進行一點小改動即可加載它。我添加了錯誤檢查,因為您應(yīng)該始終擁有它們。
func (jobRepo repository) FindAll() ([]entity.Job, error) {
var jobs []entity.Job
tx := jobRepo.db.Preload("User").Find(&jobs)
return jobs, tx.Error
}
- 1 回答
- 0 關(guān)注
- 179 瀏覽
添加回答
舉報
0/150
提交
取消
