首页 > 解决方案 > 如何解决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)
}

标签: gogo-gorm

解决方案


推荐阅读