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)在数据库中创建了一个表“tables”而不是“Table”2)如何在现有的另一个表中插入数据?(例如“用户”)


慕工程0101907
浏览 133回答 3
3回答

汪汪一只猫

1)您可以将Table的表名设置为tablefunc (Table) TableName() string {     return "table"     }另一种方法是将singleTable设置为true,那么Table默认表名将table代替tables。但它会对所有表产生相同的影响。set db.SingularTable(true)2) 在 ORM 中你应该定义你的表对象。这是一个名为 的结构Table。Gorm 将在数据库中创建一个名为的新表,tables除非您想覆盖表的名称,您可以按照步骤 1 操作。

斯蒂芬大帝

默认情况下,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-PQtype Student struct {    tableName struct{} `pg:"college_students,alias:g"``}https://gorm.io/docs/conventions.html#Pluralized-Table-Name

慕丝7291255

我对这个问题的解决:    db.Table("my_table").CreateTable(&Table{})    user := &Table{Name: "ololo", Addr: "pololo"}    db.Table("my_table").Create(user) 这段代码创建了my_table我想要的表
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go