Go语言使用GORM时如何排除字段不参与SELECT查询?
如何让GORM查询时忽略特定字段但保留JSON序列化
你可以给Inventory字段添加-:select的GORM标签,结合现有的-:migration标签,就能实现仅排除该字段的查询操作,同时保留JSON序列化功能。
修改后的结构体定义如下:
type Product struct { ID int `gorm:"primaryKey" json:"id"` Name string `gorm:"notNull;size:125" json:"name"` Inventory int `gorm:"-:migration;-:select" json:"inventory"` }
标签说明
-:migration:保持原有作用,确保该字段不会被GORM的迁移工具创建到products数据表中-:select:告诉GORM在生成SELECT查询语句时,自动忽略这个字段,避免出现Unknown column 'Product.inventory' in 'field list'的错误json:"inventory":不受GORM标签影响,依然可以正常完成JSON的序列化与反序列化
问题原因说明
之前的报错是因为-:migration仅控制数据库迁移阶段的行为,GORM在执行查询时默认会包含结构体中的所有字段。添加-:select标签后,GORM会在构造SELECT语句时主动排除该字段,同时不会干扰字段的其他功能。
内容的提问来源于stack exchange,提问作者Bens
相关产品推荐
相关产品推荐

