2016-03-25 11 views
6

Ho questa tabella pivot, che rappresenta una relazione molti a molti con i modelli Persona e Film.Sequenza: come mappare un attributo personalizzato in una tabella pivot

Pivot table schema

Il fatto è che voglio ottenere il ruolo quando chiamo i film che ottengono le persone associate. Ho provato questo, ma non mostra il ruolo:

models.Movie.findAll({ 
    include: [{ 
     model: models.Person, 
     as: 'persons', 
     through: {attributes: ["role"]} 
    }] 
}).then(function(movies) { 
    res.json(movies); 
}); 

Devo specificare qualcosa nei modelli per la role?

+0

hai finito per capirlo? –

+0

@MichaelSchinis Ho effettivamente fatto, vedere la mia risposta sotto – Lucaribou

+0

hmm. Interessante, grazie! –

risposta

4

Sono finalmente riuscito a ottenere ciò creando un modello per la tabella pivot movie_person con l'attributo role come stringa.

var MoviePerson = sequelize.define("MoviePerson", { 
    role: DataTypes.STRING 
}, 
{ 
    tableName: 'movie_person', 
    underscored: true 
}); 

Poi, nel mio modello Movie ho aggiunto questo

Movie.belongsToMany(models.Person, { 
    through: models.MoviePerson, 
    foreignKey: 'movie_id', 
    as: 'persons' 
}); 

che dovevo fare qualcosa, ovviamente, simile a questo nel mio modello Persona e il gioco è fatto!

Problemi correlati