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中的结果数据
GroupOrder
| 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:为简便起见,从这两个模型中删除了一些其他列。
答案 0 :(得分:0)
我自己发现了该错误。 Group与GroupOrder有很多关联,并且数量不多。删除它,它工作干净。
希望它对某人有帮助:)