2016-03-25 4 views
6

私はこのピボットテーブルを持っています。このピボットテーブルは、PersonとMovieモデルとの多対多の関係を表しています。Sequelize:ピボットテーブルにカスタム属性をマップする方法

Pivot table schema

の事は私が関連する人物を取得し映画を呼び出すときに役割を取得したいです。私はこれを試してみましたが、それは役割を示していない。

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

私はroleのためのモデルの中で何かを指定する必要がありますか?

+0

あなたはこの1つを考え出し終えましたか? –

+0

@MichaelSchinis私は実際には、私の答えを参照してください – Lucaribou

+0

ええと。興味深い、ありがとう! –

答えて

4

最後に、role属性を文字列としてピボットテーブルmovie_personのモデルを作成してこれを実現しました。

Movieモデルで次に
var MoviePerson = sequelize.define("MoviePerson", { 
    role: DataTypes.STRING 
}, 
{ 
    tableName: 'movie_person', 
    underscored: true 
}); 

私は私のPersonモデルで、これには明らかに似た何かをしなければならなかったし、それはそれだ。この

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

を追加しました!

関連する問題