gorm:为关系定义有效的外键或实现 Valuer/Scanner 接口
gorm: define a valid foreign key for relations or implement the Valuer/Scanner interface
我想在我的 gorm 模型中添加一些外键。我所做的与添加外键的文档完全相同。
这些是模型
专辑型号:
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{})
我在这里做错了什么?我是外键概念的新手。我只想将曲目分别与他们的艺术家和专辑相关联。
所以,问题是 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
}
由于专辑和艺术家是many-to-many关系,您可以back-reference根据您的需要check 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{})
我想在我的 gorm 模型中添加一些外键。我所做的与添加外键的文档完全相同。 这些是模型
专辑型号:
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{})
我在这里做错了什么?我是外键概念的新手。我只想将曲目分别与他们的艺术家和专辑相关联。
所以,问题是 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
}
由于专辑和艺术家是many-to-many关系,您可以back-reference根据您的需要check 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{})