Gorm 插入多对多不添加加入 table
Gorm insert into many to many not adding to join table
我有两个 table:会议 和 参与者。一个会议可以有多个参与者,而一个参与者可以参加多个会议。这种多对多关系在 gorm 中的结构如下:
type Meeting struct {
Id uint `json:"id" gorm:"primary_key"`
MeetingName string `json:"meetingName" binding:"required"`
Participants []Participant `json:"participants" gorm:"many2many:meeting_participants" binding:"required"`
}
type Participant struct {
Id uint `json:"id" gorm:"primary_key"`
Name string `json:"name" validate:"required"`
Meetings []Meeting `json:"meetings" gorm:"many2many:meeting_participants"`
}
问题是当我添加新参与者时,gorm 没有添加到连接 table (meeting_participants)。添加了新参与者,但加入 table 没有新记录。添加参与者的脚本如下:
func InsertParticipant(c *gin.Context) (string, error) {
input, err := checkParticipantInput(c)
if err != nil {
return "", err
}
newParticipant := DB.Create(&input)
DB.Save(&input)
return input.Id, newParticipant.Error
}
func checkParticipantInput(c *gin.Context) (Participant, error) {
var input Participant
err := c.ShouldBindJSON(&input)
if err != nil {
return Participant{}, err
}
return input, err
}
Json 输入:
{
"name":"testParticipant",
"meetings": [{"id": 40}]
}
知道哪里出了问题吗?提前致谢。
不太清楚为什么,但我重新启动了我的服务器并且它工作了。可能与服务器热重载时自动迁移不起作用有关。
我有两个 table:会议 和 参与者。一个会议可以有多个参与者,而一个参与者可以参加多个会议。这种多对多关系在 gorm 中的结构如下:
type Meeting struct {
Id uint `json:"id" gorm:"primary_key"`
MeetingName string `json:"meetingName" binding:"required"`
Participants []Participant `json:"participants" gorm:"many2many:meeting_participants" binding:"required"`
}
type Participant struct {
Id uint `json:"id" gorm:"primary_key"`
Name string `json:"name" validate:"required"`
Meetings []Meeting `json:"meetings" gorm:"many2many:meeting_participants"`
}
问题是当我添加新参与者时,gorm 没有添加到连接 table (meeting_participants)。添加了新参与者,但加入 table 没有新记录。添加参与者的脚本如下:
func InsertParticipant(c *gin.Context) (string, error) {
input, err := checkParticipantInput(c)
if err != nil {
return "", err
}
newParticipant := DB.Create(&input)
DB.Save(&input)
return input.Id, newParticipant.Error
}
func checkParticipantInput(c *gin.Context) (Participant, error) {
var input Participant
err := c.ShouldBindJSON(&input)
if err != nil {
return Participant{}, err
}
return input, err
}
Json 输入:
{
"name":"testParticipant",
"meetings": [{"id": 40}]
}
知道哪里出了问题吗?提前致谢。
不太清楚为什么,但我重新启动了我的服务器并且它工作了。可能与服务器热重载时自动迁移不起作用有关。