发布于 2021-08-31 08:42:26
阅读gorm文档,但我没有看到gorm如何将模型转换为SQL。是否有关于为gorm生成的SQL表的示例或文档?(特别是如何将类型或关联映射到SQL)
请看申报模型段落:
列数据类型,更喜欢使用兼容的通用类型,例如: bool、int、uint、浮起、字符串、时间、字节,这些类型适用于所有数据库,可以与其他标记一起使用,如null、size、autoIncrement…。指定的数据库数据类型(如var二进制(8))也支持,当使用指定的数据库数据类型时,它需要是一个完整的数据库数据类型,例如: MEDIUMINT无符号非空AUTO_INCREMENT
例如
type Post struct {
ID uuid.UUID `gorm:"type:uuid;default:uuid_generate_v4()"`
Title string
Tags pq.StringArray `gorm:"type:text[]"`
}另外,请看自定义数据类型段落。
发布于 2022-05-16 04:40:17
在gorm中,没有从您的模型自动生成SQL的直接解决方案。在戈朗-迁移/迁移中,您应该为升级/降级迁移版本的每个版本编写上下SQL脚本,并且不能使用gorm生成这些文件。
您应该使用手动同步迁移脚本来保持gorm模型同步。
发布于 2022-08-10 23:10:52
当我几年前第一次开始使用Gorm时,我正在寻找类似于您正在寻找的东西。最后,我使用了一个名为goose (https://github.com/pressly/goose)的包来创建迁移文件,并从CLI运行迁移。实际上效果很好。基本上,在up和down函数上,您可以使用gorm的内置迁移函数(https://gorm.io/docs/migration.html)。
下面是一个使用gorm的goose迁移文件的示例。
package main
import (
"database/sql"
"encoding/json"
"my-api/internal/pkg/db"
"time"
"my-api/internal/pkg/private/models"
"github.com/pressly/goose"
)
func init() {
goose.AddMigration(Up00007, Down00007)
}
type Event struct {
models.DefaultModel
VenueID uint `gorm:"not null"`
Tags json.RawMessage `gorm:"not null;type:json" sql:"type:json"`
Name string `gorm:"not null"`
Details string `gorm:"not null"`
Picture string `gorm:"not null"`
StartDate time.Time
EndDate time.Time
}
func Up00007(tx *sql.Tx) error {
// This code is executed when the migration is applied.
return db.Get().CreateTable(&Event{}).Error
}
func Down00007(tx *sql.Tx) error {
// This code is executed when the migration is rolled back.
return db.Get().DropTable(&Event{}).Error
}Fyi db.Get()获得一个gorm数据库。
https://stackoverflow.com/questions/64510093
复制相似问题