【问题标题】:Gorm WHERE clause not working on Preload dataGorm WHERE 子句不适用于预加载数据
【发布时间】:2019-12-03 19:48:39
【问题描述】:

下面的这个查询有效,where 子句有效,因为它使用来自ResourceUsage 结构的值,但我希望能够做这样的事情,其中​​where 子句使用来自ResourceMetadata 结构体。

db.Preload("ResourceMetadata").Where("resource_type = ?", resourceType).Where("timestamp BETWEEN ? AND ?", start, end).Limit(10).Find(&resourceUsage)

但它会抛出异常:

2019-12-03 11:06:12] 错误 1054:“where 子句”中的未知列“resource_type”

代码:

// ResourceUsage describes the storage model for resource-usage
type ResourceUsage struct {
    ID               int64             `json:"-"`
    DetailsID        int64             `json:"details_id"`
    ResourceMetadata *ResourceMetadata `gorm:"foreignkey:DetailsID;association_foreignkey:ID"`
    MeasuredType     string            `json:"measured_type"`
    Quantity         float64           `json:"quantity"`
    Timestamp        int64             `json:"timestamp"`
}

// ResourceMetadata describes the storage model for resource-usage
type ResourceMetadata struct {
    ID                  int64  `json:"-"`
    ResourceUUID        string `json:"resource_uuid"`
    ResourceName        string `json:"resource_name"`
    ResourceDisplayName string `json:"resource_display_name"`
    ResourceType        string `json:"resource_type"`
}

db.Preload("ResourceMetadata").Where("timestamp BETWEEN ? AND ?", start, end).Limit(10).Find(&resourceUsage)

【问题讨论】:

    标签: go go-gorm


    【解决方案1】:

    你可以使用 JOIN 吗?

        resourceUsages := []ResourceUsage{}
        if err := db.Joins("JOIN resource_metadata ON resource_metadata.id=details_id").
            Where("resource_metadata.resource_type = ? AND timestamp BETWEEN ? AND ?", resourceType, start, end).
            Preload("ResourceMetadata").Limit(10).
            Find(&resourceUsages).Error; err != nil {
            // ... handle error ...
        }
    

    【讨论】:

      猜你喜欢
      • 2020-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-18
      • 1970-01-01
      • 2021-10-14
      相关资源
      最近更新 更多