第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

為什么“屬于”關(guān)系中的鏈接記錄為空?

為什么“屬于”關(guān)系中的鏈接記錄為空?

Go
慕碼人2483693 2022-11-08 16:37:21
下面是一個(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: 
查看完整描述

1 回答

?
阿波羅的戰(zhàn)車

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超6個(gè)贊

go-gorm不會自動(dòng)加載嵌套對象,您必須指定要加載嵌套對象。在您的情況下,UserCard是 的嵌套對象User。在這里,您可以看到有關(guān)如何使用該Preload函數(shù)執(zhí)行此操作的更多詳細(xì)信息,但它應(yīng)該如下所示:

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


查看完整回答
反對 回復(fù) 2022-11-08
  • 1 回答
  • 0 關(guān)注
  • 128 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號