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:为简洁起见,从两个模型中删除了一些其他列。
肥皂起泡泡
相关分类