1 回答

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超6個(gè)贊
When I query that certain Delivery
你好?
如果使用預(yù)加載 db.Preload("Message").Preload("Receiver").First(&d3)
您將獲得接收器和消息的指示,例如
如果不使用預(yù)加載,您將獲得包含空消息和接收方對(duì)象的傳遞。
如果只需要消息 Id 和接收方 ID,則應(yīng)將 更改為 和Message Message Message *Message Receiver ReceiverReceiver *Receiver
如果您使用預(yù)加載 ->與上述相同
如果不使用預(yù)加載 ->則接收方和消息將為零
以下是所有測試代碼和調(diào)試信息:
type User3 struct {
gorm.Model
Name string
}
type Message struct {
gorm.Model
UserID uint `json:"userId"`
User *User3
Content string `json:"content"`
}
type Receiver struct {
gorm.Model
UserID uint `json:"userId"`
User *User3
FirstName string `json:"firstName"`
LastName string `json:"lastName"`
Email string `json:"email"`
Address string `json:"address"`
Phone string `json:"phone"`
}
type Delivery struct {
gorm.Model
Message *Message `json:"message"`
MessageID uint `json:"messageId"`
Receiver *Receiver `json:"Receiver"`
ReceiverID uint `json:"receiverId"`
DeliveryDate time.Time `json:"deliveryDate"`
Sent bool `json:"sent"`
}
func main() {
db := config.CreateMysql()
db.AutoMigrate(Delivery{})
d := Delivery{Message: &Message{User: &User3{Name: "a"}, Content: "hello b~"}, Receiver: &Receiver{User: &User3{Name: "b"}}, DeliveryDate: time.Now(), Sent: false}
db.Create(&d)
d2 := Delivery{}
db.First(&d2)
fmt.Printf("%v\n", d2)
d3 := Delivery{}
db.Preload("Message").Preload("Receiver").First(&d3)
fmt.Printf("%v\n", d3)
}
ps:以上用戶為零,如果要預(yù)加載嵌套關(guān)聯(lián),請(qǐng)使用以下方法:https://gorm.io/docs/preload.html.Preload("Message.User")
- 1 回答
- 0 關(guān)注
- 73 瀏覽
添加回答
舉報(bào)