登录
首页 >  Golang >  Go问答

错误使用预加载 gorm golang,无法正确预加载所需表

来源:stackoverflow

时间:2024-02-20 14:24:24 354浏览 收藏

学习Golang要努力,但是不要急!今天的这篇文章《错误使用预加载 gorm golang,无法正确预加载所需表》将会介绍到等等知识点,如果你想深入学习Golang,可以关注我!我会持续更新相关文章的,希望对大家都能有所帮助!

问题内容

我尝试在 gorm golang 中学习和定义模型 但我遇到了这个问题...不知道如何找到问题。 首先我在数据库中创建了2个表名user和schedule 这是模型

type user struct {
    userid       int    `json:",omitempty" gorm:"primarykey"`
    username     string `json:",omitempty"`
    userpassword string `json:"-"`
    useremail    string `json:",omitempty"`
    userfullname string `json:",omitempty"`
    schedule []*schedule `gorm:"foreignkey:userid" json:"working_schedule"`
}
type schedule struct {
    scheduleid      int `gorm:"primarykey"`
    scheduledate    int
    schedulestart   int
    scheduleend     int
    scheduletype    int
    schedulecreated int
    userid          int
}

我还在 golang 中执行此代码,用于进行查询以通过我获得的 id 获取特定用户的所有时间表。

preload("schedule").table("user").find(&user, "user_id=?", id)

但是当显示结果时,working_schedule 为空。我尝试调试上面的代码,但发现它只是运行用户的选择...不在计划中

SELECT * FROM `user` WHERE user_id=1

我不知道我错了什么。请帮我。泰


正确答案


由于您将结构命名为 schedulego-gorm 将尝试查找名为 schedules 的表,因为它使用复数 snake-case 约定。如果不成功,则在预加载时不会为其创建查询。

如果您的数据库表名为 schedule,则必须实现 tabler 接口(可能位于 schedule 结构体的定义下方)。

func (Schedule) TableName() string {
    return "schedule"
}

您可以找到有关此 here 的更多信息。

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

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