ZBLOG

gorm.io/driver/mysql CreatedAt

在 Go 语言中使用 GORM 操作 MySQL 数据库时,CreatedAt 是 GORM 提供的一个内置模型(Model)字段,用于自动记录记录的创建时间。以下是详细说明和用法示例:


1. CreatedAt 的作用

  • 自动填充时间:当创建一条新记录时,GORM 会自动将当前时间赋值给 CreatedAt 字段。
  • 约定优于配置:默认情况下,GORM 会识别名为 CreatedAtUpdatedAt 的字段,并自动管理它们。

2. 定义模型(含 CreatedAt

import (
    "gorm.io/gorm"
    "time"
)

type User struct {
    gorm.Model        // 内嵌 gorm.Model,包含 ID、CreatedAt、UpdatedAt、DeletedAt
    Name      string
}

// 或者显式定义 CreatedAt
type Product struct {
    ID        uint   `gorm:"primaryKey"`
    Name      string
    CreatedAt time.Time // 手动声明 CreatedAt
}

3. 插入数据时的行为

// 插入新记录时无需手动设置 CreatedAt
user := User{Name: "Alice"}
db.Create(&user) // CreatedAt 会自动设置为当前时间

product := Product{Name: "Laptop"}
db.Create(&product) // CreatedAt 也会自动填充

4. 自定义字段名或行为

如果不想使用默认的 CreatedAt,可以通过标签自定义:

type CustomModel struct {
    CreateTime time.Time `gorm:"autoCreateTime"` // autoCreateTime: 创建时自动填充时间
}

5. FAQ

  • 问题1:为什么我的 CreatedAt 没有自动填充?
    答:确保字段名拼写正确(区分大小写),或检查是否禁用了 GORM 的钩子(Hook)。

  • 问题2:如何禁用自动时间戳?
    答:在连接 MySQL 时配置:

db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
    DisableAutomaticPing: true,
})

如果需要进一步探讨 GORM/MySQL/Go ,可以继续提问!


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=23938

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?