go - 如何解决gorm many2many error1062
问题描述
我在新闻和标签之间有很多关系。每当我尝试将新闻分配给标签时,它都会给我一个错误Error 1062: Duplicate entry '5' for key 'news_id'
我的模型如下所示:
type Tag struct {
ID uint64 `json:"id" gorm:"primary_key;unique;AUTO_INCREMENT"`
Title string `json:"title" gorm:"varchar(20)" binding:"required"`
News []*News `json:"news" gorm:"many2many:news_tags;association_foreignkey:ID;foreignkey:ID"`
CreatedAt time.Time `json:"created_at" gorm:"column:created_at"`
UpdatedAt time.Time `json:"updated_at" gorm:"column:updated_at"`
}
// News model
type News struct {
ID uint64 `json:"id" gorm:"primary_key;unique;AUTO_INCREMENT"`
Title string `json:"title" gorm:"varchar(20)" binding:"required"`
Body string `json:"body" gorm:"varchar(500)" binding:"required"`
Status string `json:"status" gorm:"varchar(5)"` // 1 = publish; 2 = draft; 3 = deleted;
Tags []*Tag `json:"tags" gorm:"many2many:news_tags;association_foreignkey:ID;foreignkey:ID"`
Topics []*Topic `json:"topics" gorm:"many2many:news_topics"`
CreatedAt time.Time `json:"created_at" gorm:"column:created_at"`
UpdatedAt time.Time `json:"updated_at" gorm:"column:updated_at"`
}
// My code when trying to assign new tag
func (n *News) AssignTags(tag Tag) {
db.DB().Model(n).Association("Tags").Append(tag)
}
解决方案
推荐阅读
- angular - Angular BehaviorSubject - 如何删除所有数据?
- c# - 用逗号或点进行双精度操作
- excel - 如何在单元格中定位按钮?
- javascript - 如何避免非常长的路径并在 Create React App 项目中使用绝对路径?
- node.js - Node JS with MongoDB Aggregate with $unwind not working $addFields, $sort, $match 在聚合管道中
- java - 如何根据给定范围从数组中选择一组数字?
- .net-core - DotNet Core 和 Net4.6.1 依赖项
- python-3.x - 如何解决 Chrome 显示“Aw,Snap!”的问题 通过 ChromeDriver 和 Selenium 通过 Python 3 执行测试时的页面
- c - C 是否具有可以测试值是否在预期值的公差范围内的函数,如果不是,我如何创建一个?
- python - 当我有太多但需要全部数据时,如何预处理我的数据?