【发布时间】:2021-08-21 18:31:46
【问题描述】:
我正在尝试了解如何使用 GORM 对具有 many2many 关系的项目进行查询,但我真的迷路了。
我有以下数据库模型:
type Asset struct {
gorm.Model
Id uint `gorm:"primaryKey"`
MachineUID string `gorm:"type:varchar(128)" json:"machine_uid"`
AssetToken string `gorm:"uniqueIndex;type:varchar(128)"`
CommandQueries []*CommandQuery `gorm:"many2many:command_asset;"`
}
type CommandQuery struct {
gorm.Model
Id uint `gorm:"primaryKey"`
UUID string `gorm:"type:varchar(128)" json:"uuid"`
CmdType int `json:"cmdtype"`
CmdArgs string `gorm:"type:varchar(128)" json:"cmdargs"`
Assets *[]Asset `gorm:"many2many:command_asset;"`
Active bool
}
首先,我成功地尝试从令牌中检索资产,如下所示:
token := "test-token"
var result Asset
db.Where("asset_token = ?", token).First(&result)
if result.Id == 0 {
return fmt.Errorf("Asset cannot be found in database")
}
但是从这个返回的结构中,我想检索所有 CommandQuery 对象,其中:
- 此资产在 CommandQuery.assets 中
- 其中 CommandQuery.active = true
我尝试了很多东西,但没有任何效果,任何帮助将不胜感激。
【问题讨论】: