【问题标题】:go-gorm difference between db.Model and db.Table querydb.Model 和 db.Table 查询之间的 go-gorm 区别
【发布时间】:2026-01-16 16:00:02
【问题描述】:

db.Modeldb.Table 查询在 go-gorm 中的区别是什么。 我发现的一个区别是,在使用 db.Table().Updates() 时,它不会自行更新 updated_at 字段,而在使用 db.Model 时它会更新。

不知道是bug还是预期的方式,还有其他区别吗?

【问题讨论】:

    标签: go go-gorm


    【解决方案1】:

    db.Model是普通的做事方式。它允许您告诉 gorm 此操作与哪个模型结构相关。它并不总是需要,例如具有正确结构类型的简单 Find 将自动推断模型。

    db.Table 允许您与可能没有模型结构的表进行交互,或者为给定的操作覆盖表。它级别较低且不太方便,因为它需要代码知道表名,而在普通 ORM 代码中,您希望从模型名自动派生该表名。

    如果您看到 Table().Updates() 没有设置 updated_at 列,您可能需要确保您运行的是最新版本的 gorm。另外,您是使用模型结构实例还是使用地图调用更新? (使用地图不太可能设置 updated_at)。

    【讨论】:

    • 谢谢,我在最新版本,我用地图调用它。
    • 好的,那就这么解释吧:使用 Table and Updates(map),gorm 无法知道您的模型甚至有一个 UpdatedAt 字段需要处理。