2017-03-17 28 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; 

我不需要id屬性在此表中但自動創建它。兩個外鍵的組合應該被視爲主鍵,即組合主鍵。 enter image description here不需要自動創建的續集的id屬性

+0

你想創建俱樂部和學生之間的多對多關係嗎? – piotrbienias

+0

是它的多對多關係 –

+0

「club_member」表代表多對多的關係,所以俱樂部可以有很多學生,學生可以屬於很多俱樂部。是對的嗎? – piotrbienias

回答

1

您應該使用belongsToManyassociate功能

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' }); 
} 

這將創建club_members表由club_idstudent_id複合主鍵,沒有默認id列。

+1

由於它的工作 只需更新這'models.club.belongsToMany(models.student,{通過 :models.club_members,FOREIGNKEY: 'club_id' }); models.student.belongsToMany(models.club,{ through:models.club_members,foreignKey:'student_id' });' –

+0

我的不好,忘了大括號,謝謝! ;) – piotrbienias