在关联 table 中插入时创建关联问题
Create associations issue in inserting in associated table
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 table.
的最后一行 group_id 列中插入 18 代替 30
为什么会这样?有人可以解释一下是否有错误。
PS:为简洁起见,从两个模型中删除了一些其他列。
我自己发现了错误。 Group 与 GroupOrder 具有多对多关联。删除它并且它工作干净。
希望对大家有所帮助:)
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 table.
的最后一行 group_id 列中插入 18 代替 30为什么会这样?有人可以解释一下是否有错误。
PS:为简洁起见,从两个模型中删除了一些其他列。
我自己发现了错误。 Group 与 GroupOrder 具有多对多关联。删除它并且它工作干净。
希望对大家有所帮助:)