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

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

Gorm 左加入 Scan()

Gorm 左加入 Scan()

Go
慕容708150 2022-08-24 15:47:56
我正在嘗試聯接到表和上,并獲得類型的結果ClassBookingclasses.id = bookings.class_idDisplayBookingtype Class struct {    Id   int    `json:"id"`    Name string `json:"name"`}type Booking struct {    Id      int    `json:"id"`    User    string `json:"user"`    Members int    `json:"members"`    ClassId int    `json:classid`    //Class   Class  `gorm:"constraint:OnUpdate:CASCADE,OnDelete:SET NULL;"`}type DisplayBooking struct {    Id        int    `json:"id"`    User      string `json:"user"`    Members   int    `json:"members"`    ClassId   int    `json:classid`    ClassName string `json:"classname"`}為此,我嘗試了gorm和方法Scan()Rows()func returnAllBookings(w http.ResponseWriter, r *http.Request) {    bookings := []DisplayBooking{}    db.Model(&Booking{}).Select("bookings.id, bookings.user, bookings.members, bookings.class_id, classes.name").Joins("left join classes on bookings.class_id = classes.id").Scan(&bookings)    fmt.Println("Endpoint Hit: returnAllBookings")    rows, err := db.Table("bookings").Select("bookings.id, bookings.user, bookings.members, bookings.class_id, classes.name").Joins("left join classes on bookings.class_id = classes.id").Rows()    if err != nil {        return    }    for rows.Next() {        log.Println(rows)    }    json.NewEncoder(w).Encode(bookings)}Scan()在class_name字段中返回空值,雖然似乎可以完成工作,但輸出格式不是JSON編碼輸出Rows()Scan()[{"id":1,"user":"test1","members":1,"ClassId":2,"classname":""},{"id":2,"user":"test2","members":2,"ClassId":1,"classname":""}]Rows()輸出(控制臺) - 粗體值是正確的,但有很多不必要的信息my-go-app_1  | 2021/04/09 07:42:09 &{0xc00021e1b0 0x6dcfa0 0xc00026adc0 <nil> <nil> {{0 0} 0 0 0 0} false <nil> **[1 test1 1 2 business]**}my-go-app_1  | 2021/04/09 07:42:09 &{0xc00021e1b0 0x6dcfa0 0xc00026adc0 <nil> <nil> {{0 0} 0 0 0 0} false <nil> **[2 test2 2 1 first]**}有沒有辦法讓代碼與函數一起工作?Scan()
查看完整描述

1 回答

?
紅糖糍粑

TA貢獻1815條經驗 獲得超6個贊

你可以用 做,字段中沒有值,因為字段的默認值是 ,但是你要匹配的列是 ,這兩者不匹配。Scanclass_nameDisplayBookinggorm tag nameclass_namename

您可以添加列別名來解決此問題,將表達式更改為以下表達式:Scan()

db.Debug().Model(&Booking{}).Select("bookings.id, bookings.user, bookings.members, bookings.class_id, classes.name as class_name").Joins("left join classes on bookings.class_id = classes.id").Scan(&bookings)


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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