仅返回一行的Gorm查询
我们试图将Gorm与mysql 8结合使用,这让我们感到非常沮丧 为了简洁起见,我简化了以下表格仅返回一行的Gorm查询,go,go-gorm,Go,Go Gorm,我们试图将Gorm与mysql 8结合使用,这让我们感到非常沮丧 为了简洁起见,我简化了以下表格 type StoragePool struct { gorm.Model PoolId string `json:"id" gorm:"column:poolid;size:40;unique;not null"` Volumes []Volume `json:"volumes" gorm:"foreignkey:StorageId;association_foreig
type StoragePool struct {
gorm.Model
PoolId string `json:"id" gorm:"column:poolid;size:40;unique;not null"`
Volumes []Volume `json:"volumes" gorm:"foreignkey:StorageId;association_foreignkey:PoolId"`
}
type Volume struct {
gorm.Model
StorageId string `json:"storageid" gorm:"column:storageid;size:40"`
}
数据插入似乎工作正常。两个表都会被填充,并且没有违反任何约束
需要一条记录的查询似乎可以正常工作:
poolRecord := &StoragePool{}
if err := tx.Where("poolid = ?", pool.PoolId).First(&StoragePool{}).Scan(poolRecord).Error; err != nil {
return err
}
此查询仅返回一行。当我在go之外以原始SQL执行这个精确的查询时,它将返回我期望的所有31条记录
var poolVolumes []Volume
if err := tx.Where("storageid = ?", pool.PoolId).Find(&Volume{}).Scan(&poolVolumes).Error; err != nil {
return err
}
log.Debugf("found %d volumes belonging to %q [%s]", len(poolVolumes), pool.Name, pool.PoolId)
根据文档,第二条sql语句相当于从STORAGEID='poolid'的卷中选择*。这不是我现在的行为
有人知道我做错了什么吗?我很少在使用go编码时使用ORM,但按照gorm的说明,似乎你做错了 扫描用于将结果扫描到另一个结构中,如下所示: 类型结果结构{ 名称字符串 年龄智力 } var结果
db.Tableusers.Selectname,age.Wherename=?,3.Scan&result我很少在使用go编码时使用ORM,但按照gorm的说明,似乎您的方式不对 扫描用于将结果扫描到另一个结构中,如下所示: 类型结果结构{ 名称字符串 年龄智力 } var结果 db.Tableusers.Selectname,age.Wherename=?,3.扫描和结果一致性检查值:pool.PoolId是否正确检查值:pool.PoolId是否正确