调整表的不同模式关系

问题描述 投票:0回答:2

为了进一步解释我的问题,我有一个 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)
}

免责声明:我的问题几乎与此相同 - 不同 Postgres 模式的 GORM 模型外键 - 但还没有人回答它

postgresql go database-schema go-gorm
2个回答
0
投票

尝试如下

implementing the Tabler interface.

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


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

0
投票

我发布了一个专门处理 gorm 中多租户的包;请参阅https://github.com/bartventer/gorm-multitenancy

© www.soinside.com 2019 - 2024. All rights reserved.