使用GORM过滤具有has_many关系的查询吗?

时间:2019-03-26 15:17:35

标签: go go-gorm

在一个简单的many_to_many关系上有一个超级简单的Gorm查询问题,我在MYSQL DB中有3个表,其建模方式如下:

type Product struct {
    ID          uint         `gorm:"unique"  json:"id"`
    Name        string       `gorm:"name"  json:"name"`
    Ingredients []Ingredient `gorm:"many2many:product_ingredients;"  json:"ingredients"`
}

type Ingredient struct {
    ID   uint   `gorm:"unique" json:"id"`
    Name string `gorm:"name" json:"name"`
}

(还有一个联接表)

我想要一个查询,以获取某个产品中包含成分的所有产品:

我可以执行所有数据的一般查询:

db.Debug().Preload("Ingredients").Limit(limit).Offset(offset).Find(&products)

但是尝试做这样的事情

db.Debug().Preload("Ingredients").Limit(limit).Offset(offset).Where(Ingredient{Name: "Chicken"}).Find(&products)

给我 错误1054:“ where子句”中的未知列“ ingredients.name”

我希望只退回以鸡肉为原料的产品。

有人可以帮助吗?

这应该很简单,但是我找不到像这样的用例,文档也相当混乱。

0 个答案:

没有答案