Go 选择/查找模型时忽略列

Go 选择/查找模型时忽略列,go,orm,go-gorm,Go,Orm,Go Gorm,我对我的模型有一些问题: type MaterieprimeAnalisi struct { GUIDAnalisiMP string `gorm:"size:50;not_null;primary_key;"` GUIDMP null.String `gorm:"size:50;"` Materieprime Materieprime

我对我的模型有一些问题:

type MaterieprimeAnalisi struct {
    GUIDAnalisiMP      string             `gorm:"size:50;not_null;primary_key;"`
    GUIDMP             null.String        `gorm:"size:50;"`
    Materieprime       Materieprime       `gorm:"foreignkey:GUIDMP;associationforeignkey:GUIDMP;"`
    GUIDPA             null.String        `gorm:"size:50;"`
    Parametrianalitici Parametrianalitici `gorm:"foreignkey:GUIDPA;associationforeignkey:GUIDPA;"`
    Valore             null.Float
}
当I
db.AutoMigrate()
按预期创建此表和相关表时,关联和外键工作正常。 我的问题是,当我直接选择所有行时,如何排除某些字段:

var ma []models.MaterieprimeAnalisi
res := db.Find(&ma)
或者当我将其与另一个表连接时:

var ma []models.MaterieprimeAnalisi
res := db.Joins("Parametrianalitici").Find(&ma)

例如,如果我想从输出结果中省略
materialtime
parametriantici
,我该怎么做?

GORM文档通常很差。有三种方法可以在查询中省略列。第一种方法是使用
tx.Omit
功能

var ma []models.MaterieprimeAnalisi
_ := db.Omit("Materieprime", "Parametrianalitici").Find(&ma)
然而,你永远不会在网站上的示例中找到这个函数。GORM 2.0中推荐的方法是使用
tx.Select
或使用智能选择功能

tx.Select
可以像您想象的那样使用:

var ma []models.MaterieprimeAnalisi
_ := db.Select("GUIDAnalisiMP", "GUIDMP", "GUIDPA", "Valore").Find(&ma)
对于
智能选择
,您可以创建仅包含所需字段的分部结构:

type MaterieprimeAnalisiSubset struct {
    GUIDAnalisiMP      string            
    GUIDMP             null.String          
    GUIDPA             null.String 
    Valore             null.Float
}
var ma []MaterieprimeAnalisiSubset
tx.Model(&models.MaterieprimeAnalisi{}).Find(&ma)
文件: