Olá! Tudo joia?
Vamos esclarecer a sua dúvida sobre o relacionamento entre pessoas e cursos. Pelo que você descreveu, estamos lidando com uma relação de muitos para muitos (N:M), onde:
- Uma pessoa pode se matricular em vários cursos.
- Um curso pode ter várias pessoas matriculadas.
Para implementar essa relação no Sequelize, utilizamos o método belongsToMany
. Isso é feito criando uma tabela intermediária que armazena as chaves estrangeiras de ambas as tabelas envolvidas na relação. Vamos ver um exemplo prático de como fazer isso.
Primeiro, vamos definir os modelos Pessoa
e Curso
:
// modelo pessoa.js
module.exports = (sequelize, DataTypes) => {
class Pessoa extends Model {
static associate(models) {
Pessoa.belongsToMany(models.Curso, {
through: 'Matriculas',
foreignKey: 'pessoaId'
});
}
}
Pessoa.init({
nome: DataTypes.STRING,
// outros atributos
}, {
sequelize,
modelName: 'Pessoa',
});
return Pessoa;
};
// modelo curso.js
module.exports = (sequelize, DataTypes) => {
class Curso extends Model {
static associate(models) {
Curso.belongsToMany(models.Pessoa, {
through: 'Matriculas',
foreignKey: 'cursoId'
});
}
}
Curso.init({
titulo: DataTypes.STRING,
// outros atributos
}, {
sequelize,
modelName: 'Curso',
});
return Curso;
};
Neste exemplo, estamos utilizando o método belongsToMany
para criar a relação muitos para muitos entre Pessoa
e Curso
. O parâmetro through
define a tabela intermediária que será utilizada para armazenar as chaves estrangeiras.
Agora, precisamos criar o modelo para a tabela intermediária Matriculas
:
// modelo matricula.js
module.exports = (sequelize, DataTypes) => {
class Matricula extends Model {
static associate(models) {
// Associações podem ser definidas aqui, se necessário
}
}
Matricula.init({
pessoaId: {
type: DataTypes.INTEGER,
references: {
model: 'Pessoas',
key: 'id'
}
},
cursoId: {
type: DataTypes.INTEGER,
references: {
model: 'Cursos',
key: 'id'
}
}
}, {
sequelize,
modelName: 'Matricula',
});
return Matricula;
};
Com esses modelos definidos, você pode criar as migrações para gerar as tabelas no banco de dados. Após isso, as associações estarão configuradas e você poderá trabalhar com a relação muitos para muitos entre pessoas e cursos.
Espero ter ajudado e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.