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

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

為什么“屬于”關系中的鏈接記錄為空?

為什么“屬于”關系中的鏈接記錄為空?

Go
慕碼人2483693 2022-11-08 16:37:21
下面是一個程序(基于 GORM),它定義了兩個數據庫表(users和cards),其邏輯是用戶擁有一張卡。然后它創建數據庫,填寫它,搜索并打印出其中唯一的記錄。我的問題:最終搜索中的卡是空的,它沒有附加到用戶。從數據庫的角度來看,一切都很好:SELECT * FROM usersid  name    card_id1   john    1SELECT * FROM cardsid  number1   42請注意,card_id在第一個結果中正確指向id卡的。為什么我的最后一次搜索返回的是一張空卡片?package mainimport (    "fmt"    "gorm.io/driver/sqlite"    "gorm.io/gorm")type User struct {    ID     uint    Name   string    UserCard   Card    CardID uint}type Card struct {    ID     uint    Number string}func main() {    // initialize the database    db, _ := gorm.Open(sqlite.Open("mytest.sqlite"), &gorm.Config{})    db.AutoMigrate(&User{}, &Card{})    // create one card    db.Create(&Card{        Number: "42",    })    // find that card    var myCard Card    db.Where(map[string]interface{}{"number": "42"}).First(&myCard)    // create a user with that card    db.Create(&User{        Name: "john",        UserCard: myCard,    })    // find that user    var myUser User    db.Where(map[string]interface{}{"name": "john"}).First(&myUser)    // print his name and card number    // the problem is here: the card number is empty, as if the card was not linked    fmt.Printf("name: %v, number: %v", myUser.Name, myUser.UserCard.Number)}// output// name: john, number: 
查看完整描述

1 回答

?
阿波羅的戰車

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

go-gorm不會自動加載嵌套對象,您必須指定要加載嵌套對象。在您的情況下,UserCard是 的嵌套對象User。在這里,您可以看到有關如何使用該Preload函數執行此操作的更多詳細信息,但它應該如下所示:

var myUser User
db.Preload("UserCard").Where(map[string]interface{}{"name": "john"}).First(&myUser)


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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