我是后端新手,我正在嘗試在表之間建立多對(duì)多關(guān)系。我使用這個(gè) repo 來制作模型:https://github.com/harranali/gorm-relationships-examples/tree/main/many-to-many 我在 postgresql 中使用了 GORM。我的模型:type Book struct { gorm.Model Title string `json:"title"` Author string `json:"author"` Description string `json:"description"` Category string `json:"Category"` Publisher string `json:"publisher"` AuthorsCard []*AuthorsCard `gorm:"many-to-many:book_authorscard;" json:"authorscard"`}type AuthorsCard struct { gorm.Model Name string `json:"name"` Age int `json:"age"` YearOfBirth int `json:"year"` Biography string `json:"biography"`}連接到數(shù)據(jù)庫并自動(dòng)遷移后:func init() { config.Connect() db = config.GetDB() db.AutoMigrate(&models.Book{}, &models.AuthorsCard{})}我創(chuàng)建了 Function 來查看這種關(guān)系是如何工作的:func TestCreate() {var AuthorsCard = []models.AuthorsCard{ { Age: 23, Name: "test", YearOfBirth: 1999, Biography: "23fdgsdddTEST", }, } db.Create(&AuthorsCard) var testbook = models.Book{ Title: "Test", Author: "tst", Description: "something", } db.Create(&testbook) db.Model(&testbook).Association("AuthorsCard").Append(&AuthorsCard)} 但是得到了這個(gè)錯(cuò)誤:恐慌:反映:在零值上調(diào)用 reflect.Value.Interface [恢復(fù)]恐慌:反映:在零值上調(diào)用 reflect.Value.Interface我該如何處理這個(gè)“空”問題并建立正確的關(guān)系?UPD:?jiǎn)栴}的第一部分與 GORM 的版本有關(guān),在我將舊版本(github.com/jinzhu/gorm v1.9.16)更改為新版本(gorm.io/gorm v1.23.6)后反映出問題錯(cuò)誤消失了。但是現(xiàn)在,當(dāng)我想創(chuàng)建新書時(shí),我得到了這個(gè)錯(cuò)誤:/go/pkg/mod/gorm.io/driver/postgres@v1.3.7/migrator.go:119 錯(cuò)誤:沒有匹配引用表“authors_cards”的給定鍵的唯一約束(SQLSTATE 42830)[28.440ms] [行:0]創(chuàng)建表“book_authorscard”(“book_id”bigint,“authors_card_id”bigint,主鍵(“book_id”,“authors_card_id”),約束“fk_book_authorscard_authors_card”外鍵(“authors_card_id”)參考“authors_cards”(“id” ),CONSTRAINT "fk_book_authorscard_book" FOREIGN KEY ("book_id") REFERENCES "books"("id")) [GIN-debug] [WARNING] 創(chuàng)建一個(gè)已經(jīng)附加了 Logger 和 Recovery 中間件的引擎實(shí)例。
1 回答

絕地?zé)o雙
TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超4個(gè)贊
通過閱讀 Gorm v2 ( https://gorm.io/docs/v2_release_note.html ) 的發(fā)行說明,我認(rèn)為您正在嘗試將 v2 功能與舊版本 (<v2) 一起使用。嘗試使用 Gorm 最新版本。
- 1 回答
- 0 關(guān)注
- 186 瀏覽
添加回答
舉報(bào)
0/150
提交
取消