Mysql
 sql >> Base de données >  >> RDS >> Mysql

SequelizeJS - hasMany à hasMany sur la même table avec une table de jointure

Puisque ce que vous essayez de faire est une auto-association, vous n'avez besoin d'appeler hasMany qu'une seule fois, ce qui créera une table de jonction

User.hasMany(User, { as: 'Contacts', joinTableName: 'userHasContacts'})

Ce qui créera la table userHasContacts comme :

CREATE TABLE IF NOT EXISTS `userHasContacts` (`userId` INTEGER , `ContactsId` INTEGER , `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL, PRIMARY KEY (`userId`,`ContactsId`)) ENGINE=InnoDB;

Pour trouver des utilisateurs et leurs contacts vous pouvez alors faire :

User.find({ where: ..., include: [{model: User, as: 'Contacts'}]})