我有以下模型:
type Drink struct {
gorm.Model // Adds some metadata fields to the table
ID uuid.UUID `gorm:"type:uuid;primary key"`
Name string `gorm:"index;not null;"`
Volume float64 `gorm:"not null;type:decimal(10,2)"`
ABV float64 `gorm:"not null;type:decimal(10,2);"`
Price float64 `gorm:"not null;type:decimal(10,2);"`
Location Location `gorm:"ForeignKey:DrinkID;"`
}
type Location struct {
gorm.Model // Adds some metadata fields to the table
ID uuid.UUID `gorm:"primary key;type:uuid"`
DrinkID uuid.UUID
Name string `gorm:"not null;"`
Address string `gorm:"not null;type:decimal(10,2)"`
Phone int `gorm:"not null;type:decimal(10,0);"`
}
但是,当我运行该程序时,它会添加两个表,但是 Drink 表中没有位置字段。迁移后我的数据库看起来像这样,不管我之前是否删除过表:
我有一种潜移默化的感觉,这可能是因为我没有使用 gorm 默认 ID,但如果是这种情况,谁能告诉我如何用 UUID 而不是 uint 以正确的方式覆盖默认 ID?或者,如果这甚至不是问题,拜托,我已经为此工作了几天,我真的不想走仅使用 gorm 提供的默认设置的“简单”道路,我实际上想了解什么在这里进行以及如何正确地做我想做的事情。运行 API 时我没有收到任何错误,并且迁移似乎也在运行,只是我定义的字段实际上没有显示在数据库中,这意味着前端将无法正确添加数据。
我想在这里发生的是在前端提供一个商店列表,当用户添加饮料时,他们将不得不从该商店列表中进行选择。添加的每种饮料只能有 1 个商店,因为不同商店的饮料价格会有所不同。所以从技术上讲,饮料桌上会有很多“重复”的饮料,但连接到不同的位置。
HUWWW
相关分类