Mysql
 sql >> Database >  >> RDS >> Mysql

SequelizeJS - hasMany to hasMany sullo stesso tavolo con una tabella di join

Dal momento che quello che stai cercando di fare è un'auto-associazione, devi chiamare hasMany solo una volta, che creerà una tabella di giunzione

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

Che creerà la tabella userHasContacts come:

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

Per trovare gli utenti ei loro contatti puoi quindi fare:

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