全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-21 5 分钟 ✍️ juanwangdev

字段忽略与只读配置

GORM 通过特殊标签控制字段在数据库操作中的读写行为,实现字段忽略或只读。

什么是字段忽略与只读

  • 忽略字段:字段不参与数据库操作,GORM 完全忽略该字段
  • 只读字段:字段仅在查询时读取,插入和更新时不写入数据库

忽略字段(-)

使用 - 标签完全忽略字段:

Go
type User struct {
    ID       uint   `gorm:"primaryKey"`
    Name     string `gorm:"size:100"`
    Password string `gorm:"-"` // 忽略此字段
}

被忽略的字段不会创建对应的数据库列,也不参与任何 CRUD 操作。

只读字段(->)

使用 -> 标签设置为只读:

Go
type User struct {
    ID        uint      `gorm:"primaryKey"`
    Name      string    `gorm:"size:100"`
    CreatedAt time.Time `gorm:"->"` // 只读,查询时读取
}

只读字段会创建数据库列,但插入和更新时不会写入该字段的值。

只写字段(<-)

使用 <- 标签设置为只写:

Go
type User struct {
    ID       uint   `gorm:"primaryKey"`
    Name     string `gorm:"size:100"`
    Password string `gorm:"<-"` // 只写,不读取
}

读写分离配置

Go
type User struct {
    ID        uint      `gorm:"primaryKey"`
    Name      string    `gorm:"size:100"`
    CreatedAt time.Time `gorm:"->;autoCreateTime"` // 只读,自动填充创建时间
    UpdatedAt time.Time `gorm:"<-;autoUpdateTime"` // 只写,自动填充更新时间
}

应用场景

场景标签说明
密码字段gorm:"-"不存储到数据库
创建时间gorm:"->"仅查询时读取
更新时间gorm:"<-"仅更新时写入
计算字段gorm:"-"运行时计算,不存储

注意事项

  • - 标签字段完全不参与数据库操作,不会创建列
  • -> 标签字段会创建列,但插入/更新时不写入
  • <- 标签字段会创建列,但查询时不读取
  • 可配合 autoCreateTime、autoUpdateTime 使用

要点总结

标签行为是否创建列
-完全忽略
->只读
<-只写
无标签读写

存放路径:D:\git2\jwdev\articles\GORM\入门\模型标签与字段配置\字段忽略与只读配置.md

📝 发现内容有误?点击此处直接编辑

← 上一篇 命名约定与映射规则
下一篇 → 标签配置默认值
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库