在关联 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 具有多对多关联。删除它并且它工作干净。

希望对大家有所帮助:)