2017-06-22 122 views
0

sequelize.jsを使用して1つの呼び出しを行い、2つのテーブルにpingする方法を検討しています。sequelize.jsを使用して複数の外部キーとの関連付けを作成する

私は私の結果は、2つの外部キーと一致し、私の第二のテーブル内の対応するデータを見つけたい - 「時間期間」と「NODEID」

現在、関係なく、別のエイリアス(S)の - だけで私のクエリ結果指定した最後の外部キーと一致します。したがって、この場合の期間。

associate: function (models) { 
    models.belowOcfBudget.belongsTo(models.belowOcf, { 
     foreignKey: 'nodeid', 
     targetKey: 'nodeid', 
     as: 'belowOcf_id' 
    }); 
    models.belowOcfBudget.belongsTo(models.belowOcf, { 
     foreignKey: 'timeperiod', 
     targetKey: 'timeperiod', 
     as: 'belowOcf_time' 
    }); 
} 

以下は、私のルーターにこの関連付けを含めるところです。

どのようにしてクエリを実行し、一致する時間枠とIDを持つ2つのテーブルからデータセットを返すことができますか?

答えて

0

関連するモデルを2回含めるべきではありません。その結果、LEFT JOINはすべての外部キーに1つずつ、同じ表でLEFT JOINになります。 代わりにそれを一度だけ追加し、2番目の外部キーのマッチングを追加のwhere句としてインクルードに追加します。

はそれをテストしていませんが、それはこのようなものになります。

BelowOCFBudget.findAll({ 
    raw: true, 
    include:[{ 
     model: models.belowOcf, 
     where: {belowOcf.timeperiod: timeperiod} 
    }], 
}) 
関連する問題