首页 > 解决方案 > golang ORM 表名

问题描述

我有一些代码可以在 Postgres DB 中创建表

import (
    "github.com/jinzhu/gorm"
    _ "github.com/lib/pq"
)
type Table struct {
    Id   int    `gorm:"primary_key"`
    Name string `gorm:"type:varchar(100)"`
    Addr string `gorm:"type:varchar(100)"`
}
func main() {
    db, _ := gorm.Open("postgres", "user=postgres password=poilo777 dbname=mydb sslmode=disable")
    defer db.Close()
    db.CreateTable(&Table{}) 
    user := &Table{Name: "ololo", Addr: "pololo"}

我面临两个问题:1)在数据库中创建了一个表“表”而不是“表”2)如何在现有的另一个表中插入数据?(例如“用户”)

标签: postgresqlgoorm

解决方案


1)您可以将表的表名设置为table

func (Table) TableName() string {
    return "table"
}

另一种方法是将singularTable设置为true,则Table默认表名将table代替tables。但它会影响所有表。

set db.SingularTable(true) 

2)在 ORM 中,你应该定义你的表对象。这是一个名为Table. Gorm 将在数据库中创建一个名为的新表tables,除非您想覆盖表的名称,否则您可以按照步骤 1 操作。


推荐阅读