Посылка многих в многие в MYSQL создает ошибку 1062 - PullRequest
0 голосов
/ 11 октября 2019

Я создал много-много отношений между двумя таблицами, используя 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

...