Я создал много-много отношений между двумя таблицами, используя sequelize. Я могу заполнить записи для обеих таблиц в MYSQL, но в соединительной таблице выдается ошибка 1062 для дублированных данных первичного ключа.
То, что я пытаюсь сделать, это установить отношение многие ко многим, где порядокможет иметь много элементов, а элементы могут иметь много заказов ... соединены таблицей OrderItems.
Вот моя таблица элементов с ассоциацией
module.exports = function(sequelize, DataTypes) {
var Item = sequelize.define("Item", {
itemId: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true
},
itemName: {
type: DataTypes.STRING
},
price: {
type: DataTypes.DOUBLE
},
price: {
type: DataTypes.DOUBLE
}
});
Item.associate = function(models) {
Item.belongsToMany(models.Orders, {
through: "OrderItems",
as: "orders",
foreignKey: "itemid"
});
};
return Item;
};
Вот моя таблица заказов с ассоциацией
module.exports = function(sequelize, DataTypes) {
var Orders = sequelize.define("Orders", {
orderId: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true},
orderQty: {
type: DataTypes.INTEGER}
});
Orders.associate = function(models) {
Orders.belongsToMany(models.Item, {
through: 'OrderItems',
as: 'item',
foreignKey: 'orderId',
});
};
return Orders;
};
А вот и таблица соединения
module.exports = function(sequelize, DataTypes) {
var OrderItem = sequelize.define("OrderItem", {
itemId: {
type: DataTypes.INTEGER,
allowNull: false,
references:{
model: 'Item',
key: 'id'
}
},
orderId: {
type: DataTypes.INTEGER,
allowNull: false,
references: {
model: 'Orders',
key: 'id'
}
}
});
return OrderItem;
};
Я могу заполнить записи как для таблицы заказа, так и для таблицы товаров, но когда я пытаюсь увидеть таблицу orderItems, я получаю повторяющуюся ошибку первичного ключа,Для заказа я хотел бы, чтобы к нему было подключено несколько заказов. Это означает, что клиент может выбрать из киоска множество товаров, каждый из которых связан с заказом. И оба могут быть добавлены к элементу заказа:
OrderItem может содержать что-то вроде этого:
OrderItem:
orderID 2, itemId 5
orderID 2, itemId 10
orderID 2, itemID 2