无法创建引用现有行的记录。
我有两个表和一个表引用在另一个。表“类别”已经存在。我试图添加新的记录在“遗产”表,但戈姆试图做新的记录在类别。
type Category struct {
gorm.Model
Name string `gorm:"unique"`
}
type Site struct {
gorm.Model
Category Category `gorm:"foreignkey:CategoryID"`
DateInscribed string
HttpURL string
Latitude float32
Location string
Longitude float32
SecondaryDates string
ShortDescription string
Site string
}
正如我所说,“类别”表存在所有我需要的行。我试图做网站记录,但得到问题“定义一个有效的外键的关系或实现值/扫描器接口”。
用这个代码我尝试做记录。
site := &models.Site{
Category: models.Category{Name: heritage.Category},
DateInscribed: heritage.DateInscribed,
HttpURL: heritage.HttpURL,
Latitude: heritage.Latitude,
Location: heritage.Location,
Longitude: heritage.Longitude,
SecondaryDates: heritage.SecondaryDates,
ShortDescription: heritage.ShortDescription,
}
db.Create(site)
似乎我试图在类别表上创建新记录,但只需要将category_id值添加到站点记录中。
1条答案
按热度按时间nkcskrwz1#
通常你不会把
Name
存储为外键,而是把ID
值存储为外键。为此,你需要在Site中添加一个新字段CategoryID
,类型为uint
:该字段将自动链接到Category表,因此如果使用默认名称,则不需要写入
gorm:"foreignKey:CategoryID"
。然后,要创建Site对象,可以按以下方式执行操作:
如果你想重用现有的表Category,你需要从name中找到ID:
对于我来说,如果您想引用Name字段,GORM文档中并不清楚该怎么做,也许其他人可以回答。
希望这个有用。