6 回答
TA贡献1860条经验 获得超9个赞
使用 GORM 2.0 这将起作用。请注意.必须为TablePrefix.
func ConnectDB() (db *gorm.DB, err error) {
db, err = gorm.Open(postgres.New(postgres.Config{
DSN: `user=test password=test dbname=DB-NAME port=5432 sslmode=disable`,
PreferSimpleProtocol: true,
}), &gorm.Config{
NamingStrategy: schema.NamingStrategy{
TablePrefix: "YOUR_SCHEMA_NAME.", // schema name
SingularTable: false,
}})
return
}
TA贡献1853条经验 获得超18个赞
要在 create 语句中指定特定模式,请像这样修改代码:
dbVeiculosGorm.Table("schema.tablename").Create(&model.Veiculo{Placa: veiculo.Placa, Nome: veiculo.Nome}
要为迁移操作指定架构,请添加此方法:
type Veiculo struct {
gorm.Model
Codigo int `json:"vei_codigo"`
Placa string `json:"vei_placa"`
Nome string `json:"vei_nome"`
}
func (u *Veiculo) TableName() string {
// custom table name, this is default
return "schema.veiculo"
}
TA贡献1794条经验 获得超8个赞
在自动迁移之前做
gorm.DefaultTableNameHandler = func(dbVeiculosGorm *gorm.DB, defaultTableName string) string {
return "your schema name." + defaultTableName
}
dbVeiculosGorm.AutoMigrate(&model.Veiculo{})
TA贡献1783条经验 获得超4个赞
我之前尝试了一些与最新的 gorm Close 想法有所不同的东西。
func ConnectDB() (db *gorm.DB, err error) {
db, err = gorm.Open(postgres.New(postgres.Config{
DSN: `user=postgres password=a12345 dbname=YOUR-DB-NAME port=5432 sslmode=disable`,
PreferSimpleProtocol: true, // disables implicit prepared statement usage. By default pgx automatically uses the extended protocol
}), &gorm.Config{})
return
}
func main() {
var sqlDB *sql.DB
var db *gorm.DB
{
var err error
db, err = ConnectDB()
if err != nil {
os.Exit(-1)
}
sqlDB, _ = db.DB()
sqlDB.Exec(`set search_path='Schema-Name'`)
}
defer sqlDB.Close()
}
TA贡献1810条经验 获得超5个赞
除了Alan.WCR将表名大写外,
gorm.DefaultTableNameHandler = func(db *gorm.DB, table string) string {
var tableName string
names := strings.Split(table, "_")
for _, name := range names {
tableName = tableName + strings.Title(name)
}
return "Users." + tableName
}
TA贡献1852条经验 获得超7个赞
值得一提的是,单数化比砍掉最后一个字符要复杂得多。幸运的是,jinzhu 已将单数化逻辑拆分到自己的包中,因此我们可以将 Yurifull 的代码更新为:
import (
"github.com/jinzhu/inflection"
)
...
gorm.DefaultTableNameHandler = func(db *gorm.DB, table string) string {
fmt.Printf(table)
return "schema_name." + inflection.Singular(table)
}
- 6 回答
- 0 关注
- 227 浏览
添加回答
举报