Фильтрация запроса с помощью отношения has_many с GORM? - PullRequest
1 голос
/ 26 марта 2019

Имея проблему с супер простым запросом Gorm по простому отношению many_to_many, у меня есть 3 таблицы в базе данных MYSQL, смоделированные так:

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: Неизвестный столбец 'ингридиенты.имя' в 'предложении где'

Я ожидаю возврата только тех продуктов, в которых в качестве ингредиента используется курица.

Кто-нибудь может помочь?

Это должно быть довольно просто, но я не могу найти ни одного варианта использования, подобного этому, и документы довольно запутанные.

...