为了账号安全,请及时绑定邮箱和手机立即绑定

在关联表中插入时创建关联问题

在关联表中插入时创建关联问题

Go
catspeake 2023-04-24 16:19:43
type Group struct {        gorm.Model        CreatedBy       uint64        GroupOrders []GroupOrder gorm:"many2many:group_orders;association_jointable_foreignkey:group_id;jointable_foreignkey:group_id;"    }    type GroupOrder struct {        gorm.Model        GroupID uint64        OrderID     uint64        UserID      uint64        Group       Group}我正在尝试插入这样的记录newGroup: = &Group{            CreatedBy: newGroupDetails.UserID,            GroupOrders: []GroupOrder{                {                    OrderID:     newGroupDetails.OrderID,                    UserID:      newGroupDetails.UserID,                },            },        }我正在使用它创建记录。db.Create(newGroup)它在 Group 模型中正确创建记录,但在 GroupOrder 模型中插入时,它在 group_id 列中插入 NULL 值。之后,它会触发一个查询INSERT INTO group_orders (group_id) SELECT ? FROM DUAL WHERE NOT EXISTS (SELECT * FROM group_orders WHERE group_id = ?)[30 30] 1  pkg=mysql然后在 GroupOrder 模型中插入另一条记录,所有字段均为空,但将组 ID 字段添加为先前插入的 group_order_id 值。mysql中的结果数据团购    | id | group_id | order_id | user_id |    +----+---------------+----------+---------+    | 30 |             0 |  8764822 |  678972 |    | 31 |            30 |     NULL |    NULL |团体    | id | created_by |    +----+------------+    | 18 |     678972 |至少,它应该在 GroupOrder 表的最后一行 group_id 列中插入 18 代替 30。为什么会这样?有人可以解释一下是否有错误。PS:为简洁起见,从两个模型中删除了一些其他列。
查看完整描述

1 回答

?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

自己发现了错误。Group 与 GroupOrder 具有多对多关联。删除它并且它工作干净。

希望它能帮助别人:)


查看完整回答
反对 回复 2023-04-24
  • 1 回答
  • 0 关注
  • 119 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信