登录
首页 >  Golang >  Go问答

测试条目不适合一对多关联

来源:stackoverflow

时间:2024-03-12 10:36:27 451浏览 收藏

今日不肯埋头,明日何以抬头!每日一句努力自己的话哈哈~哈喽,今天我将给大家带来一篇《测试条目不适合一对多关联》,主要内容是讲解等等,感兴趣的朋友可以收藏或者有更好的建议在评论提出,我都会认真看的!大家一起进步,一起学习!

问题内容

与此问题类似,但在一对多的情况下:关联不适用于测试条目

我在 gorm 中定义了两个模型 user 和 e-mails:文件 user.go

type user struct {
    gorm.model
    identity     string    `json:"identity"`
    password     string    `json:"password"`
    emails       []email

}

type email struct {
    gorm.model
    userid     uint
    text       string `json:"text"`
    sender     string `json:"sender"`
}

根据文档,这应该适用于测试条目:

userrec := &user.user{ identity: "john wayne", password: "mysecretpassword", emails: []user.email{user.email{text: "my text", sender: "[email protected]"}, user.email{text: "my text", sender: "[email protected]"}}}

但是,电子邮件条目不会与用户对象关联。

user 对象没有它所引用的 email 对象的条目(与“引用”情况相反),这正常吗?

如何查询用户及其所有相应的电子邮件对象?

所有电子邮件均可通过以下方式获取

var emails[] Email
db.Where("user_id = ?", id).Find(&emails)

解决方案


您需要通过引用其列名称来预加载(预加载)电子邮件表:

user := &user{}
db.preload("emails").first(user)

如果您使用一对一关系,您也可以通过调用自动完成:

db.Preload(clause.Associations).Find(user)

注意:这不适用于一对多关系。

还支持一些其他功能,例如 GORM Docs 中定义的嵌套预加载以及将联接和预加载组合在一起(用于对子表进行过滤或排序)

到这里,我们也就讲完了《测试条目不适合一对多关联》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>