2017-03-01 5 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

関連する問題