2016-04-04 7 views
6

में 3 टेबल संबद्ध करना मैं अनुक्रमित में 3 टेबल को जोड़ने की कोशिश कर रहा हूं।SEQUELIZE

मेरे द्वारा बनाए गए मॉडल निम्नानुसार हैं।

enter image description here

उपयोगकर्ता मॉडल

var Sequelize = require('sequelize'); 

module.exports = function(sequelize, DataTypes) { 
    var User = sequelize.define('User', { 
    uuid: { 
     type: Sequelize.STRING, 
     primaryKey: true 
    }, 
    first_name: { 
     type: Sequelize.STRING, 
     allowNull: false 
    }, 
    last_name: { 
     type: Sequelize.STRING, 
     allowNull: false 
    }, 
    birth_date: { 
     type: Sequelize.DATE, 
     allowNull: false 
    }, 
    gender: { 
     type: Sequelize.STRING, 
     allowNull: true 
    }, 
    email_id: { 
     type: Sequelize.STRING, 
     allowNull: false, 
     validate: { 
     isEmail: true 
     } 
    }, 
    contact_number: { 
     type: Sequelize.STRING, 
     allowNull: false, 
     validate: { 
     isNumeric: true 
     } 
    } 
    }, { 
    classMethods: { 
     associate: function(models) { 
     User.hasMany(models.UserSchool) 
     } 
    } 
    }); 

    return User; 
}; 

स्कूलों मॉडल

var Sequelize = require('sequelize'); 

module.exports = function(sequelize, DataTypes) { 
    var School = sequelize.define('School', { 
    school_id: { 
     type: Sequelize.STRING, 
     primaryKey: true 
    }, 
    name: { 
     type: Sequelize.STRING, 
     allowNull: false 
    }, 
    address: { 
     type: Sequelize.TEXT, 
     allowNull: false 
    }, 
    city: { 
     type: Sequelize.STRING, 
     allowNull: false 
    } 
    }, { 
    classMethods: { 
     associate: function(models) { 
     School.hasMany(models.UserSchool) 
     } 
    } 
    }); 

    return School; 
}; 

UserSchools मॉडल

var Sequelize = require('sequelize'); 

module.exports = function(sequelize, DataTypes) { 
    var UserSchool = sequelize.define('UserSchool', { 
    year_of_joining: { 
     type: Sequelize.DATE, 
     allowNull: true 
    }, 
    year_of_passing: { 
     type: Sequelize.DATE, 
     allowNull: true 
    }, 
    school_type: { 
     type: Sequelize.STRING, 
     allowNull: false 
    }, 
    course: { 
     type: Sequelize.STRING, 
     allowNull: true 
    } 
    }, { 
    classMethods: { 
     associate: function(models) { 
     UserSchool.belongsTo(models.User, { 
      onDelete: "CASCADE", 
      foreignKey: { 
      allowNull: true 
      } 
     }), 
     UserSchool.belongsTo(models.School, { 
      onDelete: "CASCADE", 
      foreignKey: { 
      allowNull: true 
      } 
     }); 
     } 
    } 
    }); 

    return UserSchool; 
}; 

जब मैं उन को पुनः प्राप्त userschools आपत्ति है संबंधित लेकिन स्कूल वस्तु उपयोगकर्तास्कूल के लिए नहीं है। पूरा डेटा पुनर्प्राप्त करने के लिए मैं 3 तरीके का सहयोग कैसे बना सकता हूं?

अग्रिम धन्यवाद।

+0

मुझे बताएं कि क्या इस प्रकार के डेटा को MySQL में सहेजने का बेहतर तरीका है। विलय स्कूल और उपयोगकर्तास्कूल तालिका एक विकल्प नहीं है क्योंकि मुझे अद्वितीय स्कूल आईडी के साथ एक टेबल बनाए रखने की आवश्यकता है :) –

उत्तर

3

क्या आप इसे भी आजमा सकते हैं?

user.js

classMethods: { 
    associate: function(models) { 
    // associations can be defined here 
    User.belongsToMany(models.School, { 
     through: { 
      model: models.UserSchool 
     }, 
     foreignKey: 'uuid' 
    }); 
    } 
} 

school.js

classMethods: { 
    associate: function(models) { 
    //associations can be defined here 
    School.belongsToMany(models.User, { 
     through: { 
      model: models.UserSchool 
     }, 
     foreignKey: 'school_id' 
    }); 
    } 
} 

UserSchool में कोई संघ।

+0

एक आकर्षण की तरह काम किया। बहुत बहुत धन्यवाद :) यह सच है कि वे Sequelize दस्तावेज़ीकरण के बारे में क्या कहते हैं (यह इतना अच्छा नहीं है लेकिन खुद से Sequelize ही भयानक है) :) –

+0

अरे क्या आप 4 टेबल को जोड़ने में मेरी मदद कर सकते हैं? http://stackoverflow.com/questions/41671377/sequelize-associating-4-tables –

3
User.belongsToMany(models.School, { 
    through: { 
     model: models.UserSchool 
    }, 
    foreignKey: 'uuid' 
}); 

School.belongsToMany(models.User, { 
    through: { 
     model: models.UserSchool 
    }, 
    foreignKey: 'school_id' 
}); 

यह आपकी समस्या का समाधान करना चाहिए।

+0

क्या आप 4 टेबल को जोड़ने में मेरी सहायता कर सकते हैं? बहुत मददगार होगा http://stackoverflow.com/questions/41671377/sequelize-associating-4-tables धन्यवाद –

संबंधित मुद्दे