我想使用GORM在一个表("Mangas")中创建一个新的条目,该条目有一个指向另一个表("WebSites")的FK,但不幸的是,我在创建变量后无法保存数据,即使我在表中有一个我想要保存的条目.
为了澄清,我想有一个1:M的网站之间的关系-芒果和芒果-在MySQL数据库的章节.
//in package modules
type Website struct {
gorm.Model
Name string
Url string
MangaSearchQuery string
Mangas []Manga
}
type Manga struct {
gorm.Model
Name string
Url string
ImgUrl string
Chapters []Chapter
WebsiteID uint
Website Website `gorm:"constraint:OnUpdate:CASCADE,OnDelete:SET NULL;"`
}
type Chapter struct {
gorm.Model
Url string
WasRead bool
MangaID uint
Manga Manga `gorm:"constraint:OnUpdate:CASCADE,OnDelete:SET NULL;"`
}
//in main
db := modules.GetDatabaseInstance()
manga := modules.Manga{
Model: gorm.Model{},
Name: "Test",
Url: "none",
ImgUrl: "example.com",
//WebsiteID: 1,
Website: modules.Website{Url: "test1"},
}
db.Create(manga)
我try 了多种答案,但都没有奏效.我认为它们可能适用于其他版本,因为每种方法都有很大的差异.有些要求我在运行db.Create之前向父表/接口添加一个子元素数组,另一些需要向接口添加ID或整行引用,但每次我都收到相同的错误:panic: reflect.Value.Addr of unaddressable value
我使用的是GO 1.21.0. 我不知道我的方法是不是一开始就错了,还是我漏掉了其他东西.
此外,我应该如何改进代码的建议是受欢迎的.?