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 關注
- 317 瀏覽
添加回答
舉報