登录
首页 >  Golang >  Go问答

Gorm 表之间的模式关系

来源:stackoverflow

时间:2024-02-12 23:36:20 287浏览 收藏

“纵有疾风来,人生不言弃”,这句话送给正在学习Golang的朋友们,也希望在阅读本文《Gorm 表之间的模式关系》后,能够真的帮助到大家。我也会在后续的文章中,陆续更新Golang相关的技术文章,有好的建议欢迎大家在评论留言,非常感谢!

问题内容

为了进一步解释我的问题,我有一个 postgresql 数据库。为了使数据库看起来更干净,我将大部分表分成两个模式,一个用于“用户”,另一个用于所谓的“团队”。正如预期的那样,我通过在用户表中提供 teamid 来在 groups.team 表和 users.user 表之间创建多对一关系。我正在用 golang 编写当前软件的后端,并决定使用 gorm 作为处理数据库的方式。我已经掌握了 gorm 的窍门,并弄清楚了如何使用 schema-s 并测试 gorm 是否可以处理我的数据库解决方案,我决定使用结构,我创建了这些结构来表示表,再次创建我的所有表数据库。 对于不同的模式,我必须建立不同的连接,并指定我希望它们用于特定的模式,并且因为我必须编写与用户内部的团队的连接,所以它认为它位于相同的模式中

type user struct {
    gorm.model
    firstname string
    lastname  string

    email      string
    elsysemail string
    mobile     string

    password string

    infoid     uint
    info       info
    securityid uint
    security   security
    roleid     uint
    role       role
    teamid     uint
    team       team

    lastlogin time.time
}

对于在架构内创建表时遇到问题的任何人,这是我的解决方案:

dsn := "host=localhost user=postgres password=password dbname=ht9 port=5432 sslmode=disable"
db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{NamingStrategy{TablePrefix: "schemaName."}})
if err != nil {
    log.Fatal(err)
}

免责声明:我的问题几乎与这个问题相同 - gorm 模型外键到不同的 postgres 模式 - 但还没有人回答它


正确答案


尝试实现tabler接口。如下

type AppUser struct {
    global.GVA_MODEL
    Username string `json:"userName" gorm:"index;comment:user'sname"`
}


func (u *AppUser) TableName() string {
    return "app.app_users"
}

今天关于《Gorm 表之间的模式关系》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

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