Как установить принадлежность ToMany Отношение с дополнительным атрибутом в объединяемой таблице. - PullRequest
0 голосов
/ 10 января 2019

Я хочу добавить отношение многие ко многим между двумя моделями с перьевым сиквелизом и в таблице соединений, я хочу добавить дополнительный атрибут. В документации sequelize об этом ясно сказано: мне нужно создать новую модель, и мне нравится это

const User = sequelize.define('user', {})
const Project = sequelize.define('project', {})
const UserProjects = sequelize.define('userProjects', {
    status: DataTypes.STRING
})

User.belongsToMany(Project, { through: UserProjects })
Project.belongsToMany(User, { through: UserProjects })

Но когда я определяю новую модель в своем перьевом приложении, она не создается в базе данных, поэтому мои отношения не работают

1 Ответ

0 голосов
/ 25 января 2019

Просто чтобы проверить, правильно ли я понимаю: вы хотите иметь таблицу ссылок (например, user_projects) и сопоставить с ней модель UserProjects, создавая таким образом отношение многие ко многим между User и Project модели?

Вы можете использовать функции hasMany и belongsTo вместо belongsToMany, например:

User.hasMany(UserProjects, {
  as: 'UserProjects',
  foreignKey: 'user_id' // this is what you're missing
});
Project.hasMany(UserProjects, {
  as: 'UserProjects',
  foreignKey: 'project_id' // this is what you're missing
});

UserProjects.belongsTo(User, {
  as: 'Users',
  foreignKey: 'user_id'
});
UserProjects.belongsTo(Projects, {
  as: 'Projects',
  foreignKey: 'project_id'
});

И вам нужно определить столбцы user_id и project_id в таблице ссылок как Внешние ключи.

Затем вы можете добавить любые другие атрибуты в таблицу ссылок (status или что-то еще, это не имеет значения)

...