Поскольку массивы не поддерживаются типами столбцов в SQL - по крайней мере, в большинстве версий SQL - gorm не будет создавать столбцы для полей типа slice.
Вы можете, однако, создать структуру отношений после использования ассоциации. В этом случае подойдет has-many или many-to-many (я не могу сказать из этого примера, хотя, скорее всего, has-many).
Они работают путем создания отдельных таблиц для этих вложенных объектов. В отношении «есть много» будет создана отдельная таблица для предметов и категорий, каждая из которых будет иметь ссылку на внешний ключ для таблицы инвентаризации. Случай «многие ко многим» аналогичен, но использует таблицу соединения, а не простой внешний ключ.
Например (с has-many):
type Inventory struct {
gorm.Model
LocationID string
Items []Item //this is a slice of structs
Categories []Category //this is a slice of structs
}
type Item struct {
// ...
InventoryId uint
}
type Category struct {
// ...
InventoryId uint
}
db.Model(&inventory).Related(&items)
db.Model(&inventory).Related(&categories)