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)
Правильно создает запись в модели группыно при вставке в модель GroupOrder он вставляет значение NULL в столбец group_id.
После этого он запускает запрос
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 со всеми пустыми полями.но добавление поля идентификатора группы в качестве ранее вставленного значения group_order_id.
Результирующие данные в mysql
GroupOrder
| id | group_id | order_id | user_id |
+----+---------------+----------+---------+
| 30 | 0 | 8764822 | 678972 |
| 31 | 30 | NULL | NULL |
Group
| id | created_by |
+----+------------+
| 18 | 678972 |
По крайней мере, следует вставить 18 вместо 30 впоследний столбец group_id строки в таблице GroupOrder.
Почему это происходит?Может кто-нибудь объяснить, если есть ошибка.
PS: Для краткости удалил несколько других столбцов из обеих моделей.