亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將 MySQL 查詢轉換為 GORM 查詢

如何將 MySQL 查詢轉換為 GORM 查詢

Go
烙印99 2022-07-18 16:24:30
我有兩個表:每個用戶可以有多個工作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

}


查看完整回答
反對 回復 2022-07-18
  • 1 回答
  • 0 關注
  • 162 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號