select/find 型号时省略列
Omitting column when select/find model
我对我的模型有一些疑问:
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
}
当我 db.AutoMigrate()
这个 table 和相关的按预期创建时,关联和外键工作正常。
我的问题是,当我直接 select 所有行时,如何排除某些字段:
var ma []models.MaterieprimeAnalisi
res := db.Find(&ma)
或者当我和另一个加入时 table:
var ma []models.MaterieprimeAnalisi
res := db.Joins("Parametrianalitici").Find(&ma)
例如,如果我想从输出结果中省略 Materieprime
或 Parametrianalitici
,我该怎么做?
GORM 文档通常很差。您可以通过三种方式完成查询中的省略列。第一种是使用 tx.Omit
函数。
var ma []models.MaterieprimeAnalisi
_ := db.Omit("Materieprime", "Parametrianalitici").Find(&ma)
但是,您永远不会在网站上的示例中找到此功能。 GORM 2.0 中推荐的方法是使用 tx.Select
或使用智能 Select 功能。
tx.Select
可以像你想象的那样使用:
var ma []models.MaterieprimeAnalisi
_ := db.Select("GUIDAnalisiMP", "GUIDMP", "GUIDPA", "Valore").Find(&ma)
至于 Smart Select
,您可以创建一个只包含您想要的字段的部分结构:
type MaterieprimeAnalisiSubset struct {
GUIDAnalisiMP string
GUIDMP null.String
GUIDPA null.String
Valore null.Float
}
var ma []MaterieprimeAnalisiSubset
tx.Model(&models.MaterieprimeAnalisi{}).Find(&ma)
文档:Omit, Select, Smart Select
我对我的模型有一些疑问:
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
}
当我 db.AutoMigrate()
这个 table 和相关的按预期创建时,关联和外键工作正常。
我的问题是,当我直接 select 所有行时,如何排除某些字段:
var ma []models.MaterieprimeAnalisi
res := db.Find(&ma)
或者当我和另一个加入时 table:
var ma []models.MaterieprimeAnalisi
res := db.Joins("Parametrianalitici").Find(&ma)
例如,如果我想从输出结果中省略 Materieprime
或 Parametrianalitici
,我该怎么做?
GORM 文档通常很差。您可以通过三种方式完成查询中的省略列。第一种是使用 tx.Omit
函数。
var ma []models.MaterieprimeAnalisi
_ := db.Omit("Materieprime", "Parametrianalitici").Find(&ma)
但是,您永远不会在网站上的示例中找到此功能。 GORM 2.0 中推荐的方法是使用 tx.Select
或使用智能 Select 功能。
tx.Select
可以像你想象的那样使用:
var ma []models.MaterieprimeAnalisi
_ := db.Select("GUIDAnalisiMP", "GUIDMP", "GUIDPA", "Valore").Find(&ma)
至于 Smart Select
,您可以创建一个只包含您想要的字段的部分结构:
type MaterieprimeAnalisiSubset struct {
GUIDAnalisiMP string
GUIDMP null.String
GUIDPA null.String
Valore null.Float
}
var ma []MaterieprimeAnalisiSubset
tx.Model(&models.MaterieprimeAnalisi{}).Find(&ma)
文档:Omit, Select, Smart Select