GORM 字段标签自动更新时间
时间: 2023-07-29 15:05:44 浏览: 133
在 GORM 中,我们可以使用字段标签来指定数据库表的字段名、类型、约束等信息。如果我们想要在模型中定义一个字段,在数据插入或更新时自动更新时间,我们可以使用 `gorm:"autoUpdateTime"` 标签。
下面是一个示例模型:
```go
type User struct {
ID uint `gorm:"primaryKey"`
Name string `gorm:"not null"`
Email string `gorm:"unique"`
CreatedAt time.Time
UpdatedAt time.Time `gorm:"autoUpdateTime"`
}
```
在上面的模型中,`UpdatedAt` 字段使用了 `gorm:"autoUpdateTime"` 标签。这意味着在每次更新该模型时,GORM 会自动将 `UpdatedAt` 字段设置为当前时间。
当我们使用 GORM 更新模型时,只需要更新相应的字段即可。例如:
```go
user := User{Name: "John", Email: "john@example.com"}
db.Create(&user)
// 更新用户的邮箱
db.Model(&user).Update("Email", "new.email@example.com")
// 更新用户的名称和邮箱
db.Model(&user).Updates(User{Name: "John Doe", Email: "johndoe@example.com"})
```
在上面的代码中,每次更新模型时,`UpdatedAt` 字段都会自动更新为当前时间。
需要注意的是,`gorm:"autoUpdateTime"` 标签只能用于 `time.Time` 类型的字段。如果我们要更新其他类型的字段,可以自定义 GORM 的回调函数来实现。
阅读全文