type Packages struct {
ID uint `json:"id" gorm:"primary_key"`
PackageName string `json:"package_name" gorm:"type:varchar(100)"`
Version []Version `json:"version" gorm:"foreignkey:PackageID;constraint:OnDelete:CASCADE;"`
}
type Version struct {
ID uint `json:"id" gorm:"primary_key"`
CreatedAt time.Time `json:"created_at" gorm:"autoCreateTime"`
UpdatedAt time.Time `json:"updated_at" gorm:"autoUpdateTime"`
PackageID uint `json:"-"`
VersionCode string `json:"version_code" gorm:"type:varchar(100);uniqueIndex:idx_uniq"`
BuildNumber int `json:"build_number"`
}
我需要一个查询,以选择所有的包(完整的细节需要包括字段在版本结构)的基础上版本代码的条件。
此查询将针对数据库提供结果:
SELECT * FROM软件包JOIN版本ON packages.id =版本.软件包标识WHERE版本.版本代码=1.0
但当我换上GORM:
config.DB.Select("*").Joins("LEFT JOIN versions ON packages.id=versions.package_id AND versions.version_code=?", version_code).Find(&packages)
它不是基于版本代码过滤的,它仍然给出了完整的细节。任何人请帮助!!!!
1条答案
按热度按时间b1payxdu1#
要在
Packages
结构中加载Version
切片,请使用Preload函数。您的查询应如下所示: