2017-03-17 13 views
0
let data = require('./../../config/db') 
let connection = data.connection 
let sequelize = data.sequelize 
let sql = function(){ 
    let clubMembers = connection.define('club_members',{ 
      position:{ 
       type :sequelize.ENUM('President','Treasurer') , 
       allowNull : false 
      } 
     }, 
     { 
      classMethods : { 
       associate : function(models){ 
        let clubMembers = models.club_members 
        let club = models.club 
        let student = models.student 
        club.hasMany(clubMembers,{ 
         foreignKey : "club_id" 
        }) 
        student.hasMany(clubMembers,{ 
         foreignKey : "student_id" 
        }) 
       } 
      } 
     } 
    ); 
    return clubMembers; 
} 
module.exports = sql; 

この表の属性は不要ですが、自動的に続行されます。両方の外部キーの組み合わせは、プライマリキー、すなわち複合プライマリキーとして扱われるべきである。 enter image description here自動的に作成された続行するid属性は必要ありません

+0

クラブと学生の多対多関係を作成しますか? – piotrbienias

+0

そう、その多対多の関係 –

+0

'club_member'テーブルは多対多の関係を表しているので、クラブには多くの学生がいて、学生は多くのクラブに所属することができます。そうですか? – piotrbienias

答えて

1

デフォルトid列なしで、club_idstudent_idから成る複合主キーを持つclub_membersテーブルを作成しますassociate機能

associate: function(models){ 
    models.club.belongsToMany(models.student, { through: models.club_members, foreignKey: 'club_id' }); 
    models.student.belongsToMany(models.club, { through: models.club_members, foreignKey: 'student_id' }); 
} 

これでbelongsToManyを使用する必要があります。

+1

おかげでちょうど 'models.club.belongsToManyにこれを更新する(models.student、{ を通じて:models.club_members、FOREIGNKEY: 'club_id' })正しいです。 models.student.belongsToMany(models.club、{ 〜:models.club_members、foreignKey: 'student_id' }); ' –

+0

私の悪い、中括弧を忘れてしまった! ;) – piotrbienias

関連する問題