下面是一個(gè)程序(基于 GORM),它定義了兩個(gè)數(shù)據(jù)庫表(users和cards),其邏輯是用戶擁有一張卡。然后它創(chuàng)建數(shù)據(jù)庫,填寫它,搜索并打印出其中唯一的記錄。我的問題:最終搜索中的卡是空的,它沒有附加到用戶。從數(shù)據(jù)庫的角度來看,一切都很好:SELECT * FROM usersid name card_id1 john 1SELECT * FROM cardsid number1 42請注意,card_id在第一個(gè)結(jié)果中正確指向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:
為什么“屬于”關(guān)系中的鏈接記錄為空?
慕碼人2483693
2022-11-08 16:37:21