2017-03-01 19 views
0

我使用sequelize目前正在開發一個系統,我需要一個做一個查詢獲得多個表中的數據是這樣的:選擇從多發性表Sequelize

Select Courses.id, Rooms.DisplayLabel, Periods.DisplayName, Subjects.Name 
from Rooms, Periods,Subjects, Courses 
where Periods.id = Courses.PeriodId and Rooms.id=Courses.RoomId 
and Subjects.id = Courses.SubjectId and Courses.id = 2 

客房,主題和句號目錄和課程我保存所有鍵的表格。該Sequelize定義是這樣的:

module.exports = function(sequelize, DataTypes) { 

    var Course = sequelize.define('Course', { 
     Scholarship: { 
     type: DataTypes.STRING(30) 
     }, 
     Level: { 
     type: DataTypes.INTEGER(2), 
     }, 
     CourseType: { 
     type: DataTypes.STRING(30), 
     }, 
     RecordStatus: { 
     type: DataTypes.BOOLEAN, 
     default: true 
     }, 
     DeletedAt: { 
     type: DataTypes.DATE 
     } 
    }, 
    { 
     associate: function(models){ 
     Course.belongsTo(models.School, {foreignKey: {unique: true}}); 
     Course.belongsTo(models.Person, {foreignKey: {unique: true}}); 
     Course.belongsTo(models.Period, {foreignKey: {unique: true}}); 
     Course.belongsTo(models.Schedule, {foreignKey: {unique: true}}); 
     Course.belongsTo(models.Room, {foreignKey: {unique: true}}); 
     Course.belongsTo(models.Subject, {foreignKey: {unique: true}}); 

     Course.belongsTo(models.user, { as: 'CreatedBy' }); 
     Course.belongsTo(models.user, { as: 'UpdateBy' }); 
     Course.belongsTo(models.user, { as: 'DeleteBy' }); 
     } 
    } 
); 

    return Course; 
}; 

,我得到到目前爲止我控制器上唯一的查詢是這樣的:

exports.courseFields = function(req, res) { 

    db.Course.find({ 
     where: {id: req.params.PeriodIdF}, 
     attributes: ['id'], 
     include: [{model:db.Room, attributes:['DisplayLabel']}]}) 
    .then(function(courses) { 
      return res.json(courses); 
     }) 
     .catch(function(err) { 
      return res.render('error', { 
       error: err, 
       status: 500 
      }); 
     }); 
}; 

我的問題是,我怎麼包括其他的表和字段?我混淆瞭如何續集作品。

回答

1

更新包括bloack

include: [ 
      {model:db.Room, attributes:['DisplayLabel']}, 
      {model:db.Periods, attributes:['DisplayLabel']}, 
      {model:db.Subjects, attributes:['Name']} 

     ] 
+0

感謝,這工作。只是一個附帶問題,我如何使用該關聯的id和外鍵創建一個Contrain Key。它被認爲是獨特的:真實的它會創造出來,但似乎只給這個領域一個不重複的限制。 – Ellebkey