J'ai une association m: n entre deux tables avec sequelize comme ceci:Sequelize Trouver Association belongsToMany
Cours
module.exports = function(sequelize, DataTypes) {
var Course = sequelize.define('Course', {
.....
},
{
associate: function(models){
Course.hasMany(models.Schedule);
Course.belongsTo(models.Period);
Course.belongsTo(models.Room);
Course.belongsTo(models.Subject);
Course.belongsTo(models.School);
Course.belongsTo(models.Person, { as: 'Teacher' });
}
}
);
return Course;
};
Personne
module.exports = function(sequelize, DataTypes) {
var Person = sequelize.define('Person', {
....
},
{
associate: function(models){
Person.belongsTo(models.Role, { as: 'Role' });
Person.belongsTo(models.School, { as: 'School' });
Person.belongsTo(models.Person, { as: 'Tutor' });
}
}
);
return Person;
};
Et la table d'association Inscription
module.exports = function(sequelize, DataTypes) {
var Enrollment = sequelize.define('Enrollment', {
....
},
{
associate: function(models){
Enrollment.belongsTo(models.Product, {as: 'Product'});
Enrollment.belongsTo(models.School, { as: 'School' });
models.Person.belongsToMany(models.Course, {through: {model: Enrollment},foreignKey: 'StudentEnrollId'});
models.Course.belongsToMany(models.Person, {through: {model: Enrollment},foreignKey: 'CourseEnrollId'});
}
}
);
return Enrollment;
};
J'ai essayé la suite de cette « example » mais n'explique pas grand-chose plutôt que d'une simple requête où inclure le paramètre par.
Ce que j'essaie d'archiver est d'obtenir tous les cours donnés un numéro d'étudiant (modèle personne). Comme vous pouvez le voir, le modèle de cours enregistre uniquement l'identifiant des différentes tables qui forment ensemble un cours. La personne modèle est également associé aux différents modèles, donc je donne un nom identifiant personnalisé avec foreignKey: 'StudentEnrollId'
mais lorsque je tente de spécifier le nom id dans l'inclure model : db.Person, as: 'StundetEnroll'
la requête montre l'erreur suivante: Person (StudentEnroll) is not associated to Course
Merci, ça m'a beaucoup aidé. Maintenant, je n'ai plus qu'à jouer avec les inclusions pour obtenir les autres données. – Ellebkey