下面的這個查詢有效,該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-usagetype 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-usagetype 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)
1 回答

蝴蝶刀刀
TA貢獻1801條經驗 獲得超8個贊
可以使用 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 ...
}
- 1 回答
- 0 關注
- 200 瀏覽
添加回答
舉報
0/150
提交
取消