为了账号安全,请及时绑定邮箱和手机立即绑定

golang ORM 表名称

golang ORM 表名称

Go
慕工程0101907 2023-07-17 14:32:02
我有一些代码可以在 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)在数据库中创建了一个表“tables”而不是“Table”2)如何在现有的另一个表中插入数据?(例如“用户”)
查看完整描述

3 回答

?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

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

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

另一种方法是将singleTable设置为true,那么Table默认表名将table代替tables。但它会对所有表产生相同的影响。

set db.SingularTable(true)

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


查看完整回答
反对 回复 2023-07-17
?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

默认情况下,golang Postgres 客户端将隐式使用您 姓名的复数形式struct[1]。例如


type Student struct {

   FirstName string

   LastName string

}

// will create a table name `students`

您可以像下面这样覆盖它,具体取决于您使用的内容


蓝色的

// Set User's table name to be `profiles`

func (Student) TableName() string {

  return "college_students"

}

GO-PQ

type Student struct {

    tableName struct{} `pg:"college_students,alias:g"``

}

https://gorm.io/docs/conventions.html#Pluralized-Table-Name


查看完整回答
反对 回复 2023-07-17
?
慕丝7291255

TA贡献1859条经验 获得超6个赞

我对这个问题的解决:


    db.Table("my_table").CreateTable(&Table{})


    user := &Table{Name: "ololo", Addr: "pololo"}

    db.Table("my_table").Create(user) 


这段代码创建了my_table我想要的表


查看完整回答
反对 回复 2023-07-17
  • 3 回答
  • 0 关注
  • 88 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信