亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

gorm:為關系定義一個有效的外鍵或實現 Valuer/Scanner 接口

gorm:為關系定義一個有效的外鍵或實現 Valuer/Scanner 接口

Go
慕桂英4014372 2022-11-08 16:12:55
我想在我的模型中添加一些外鍵。我所做的與添加外鍵的文檔完全相同。這些是模型專輯型號:type Album struct {    gorm.Model    Artists     []Artist    Name        string    ReleaseDate time.Time    Genre       Genre    Picture     string}藝人模特:type Artist struct {    gorm.Model    Name        string    Description string    YearsActive string}流派型號:type Genre struct {    gorm.Model    Name        string    Description string}軌道型號:type Track struct {    gorm.Model    Album    Album    Name     string    Artists  []Artist    Playtime time.Duration}以及我用于創建表的代碼:DB.Debug().AutoMigrate(&models.Genre{}, &models.Artist{}, &models.Album{}, &models.Track{})我在這里做錯了什么?我是外鍵概念的新手。我只想將曲目分別與他們的藝術家和專輯相關聯。
查看完整描述

1 回答

?
蕪湖不蕪

TA貢獻1796條經驗 獲得超7個贊

所以,問題是gorm不知道如何將專輯與藝術家聯系起來(其他人也一樣),你需要在結構中添加AlbumID字段Artist才能讓gorm知道結構之間的聯系是什么。


這是您提供的所有結構的示例:


專輯型號:


type Album struct {

    gorm.Model

    Artists     []Artist `gorm:"many2many:album_artists;"`

    Name        string

    ReleaseDate time.Time

    GenreID     uint

    Genre       Genre

    Picture     string

}

由于專輯和藝術家是多對多的關系,您可以根據您的需要反向引用它檢查here


藝人模特:


type Artist struct {

    gorm.Model

    Name        string

    Description string

    YearsActive string

}

流派型號:


type Genre struct {

    gorm.Model

    Name        string

    Description string

}

軌道型號:


type Track struct {

    gorm.Model

    AlbumID  uint

    Album    Album

    Name     string

    Artists  []Artist  `gorm:"many2many:track_artists;"`  // you may back reference this too

    Playtime time.Duration

}

現在你可以使用這個:


DB.Debug().AutoMigrate(&models.Genre{}, &models.Artist{}, &models.Album{}, &models.Track{})


查看完整回答
反對 回復 2022-11-08
  • 1 回答
  • 0 關注
  • 205 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號