戈朗->;gorm:我如何在mysql中使用sql.NullInt64作为int(10)?
我试图在previuos代码中使用mysql,但我有以下问题: 我想:戈朗->;gorm:我如何在mysql中使用sql.NullInt64作为int(10)?,mysql,go,foreign-keys,go-gorm,Mysql,Go,Foreign Keys,Go Gorm,我试图在previuos代码中使用mysql,但我有以下问题: 我想: 使用sql.NullInt64轻松处理空值 使用基本模型定义gorm.model,包括字段ID,CreatedAt,UpdatedAt,DeletedAt 添加约束Db.Model(&models.Contact{}).AddForeignKey 我的问题是: Person.ID在mysql中变成“int(10)” Contact.PersonID变成“bigint(20)” MySql需要相同的类型 有人能帮我解决
- 使用
轻松处理空值sql.NullInt64
- 使用基本模型定义
,包括字段gorm.model
,ID
,CreatedAt
,UpdatedAt
DeletedAt
- 添加约束
Db.Model(&models.Contact{}).AddForeignKey
在mysql中变成Person.ID
“int(10)”
变成Contact.PersonID
“bigint(20)”
- MySql需要相同的类型
UpdatedAt
字段的记录将其设置为当前时间
或
删除包含DeletedAt
字段的记录,不会从数据库中删除,只将字段DeletedAt
的值设置为当前时间,查询时无法找到该记录,请参阅
所以解决问题很容易,这是我案例的代码:
type Contact struct {
gorm.Model
PersonID sql.NullInt64
}
type Person struct {
gorm.Model
}
所以,现在我只需要将其用作基本模型:)
package models
import "time"
type Model struct {
ID uint `gorm:"primary_key;type:bigint(20) not null auto_increment"`
CreatedAt time.Time
UpdatedAt time.Time
DeletedAt *time.Time `sql:"index"`
}