我有一个看起来像这样的模型:
type Inventory struct {
gorm.Model
LocationID string
Items []Item //this is a slice of structs
Categories []Category //this is a slice of structs
}
答案 0 :(得分:1)
由于SQL不支持数组的列类型(至少是SQL的大多数版本),gorm不会为slice类型的字段创建列。
但是,您可以在使用关联之后创建关系结构。在这种情况下,has-many或many-to-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)