2016-09-23 10 views
1

私はPostgresでSequelizeを使用しています。 2つのテーブル(estimatorListsubcontractor)は、手動で定義されたテーブル(estimatorSubsList)で結合されています。sequelize return手動で定義したジョインテーブルの関連付け

db.subcontractor.belongsToMany(db.estimatorList, { through: db.estimatorSubsList }); 
db.estimatorList.belongsToMany(db.subcontractor, { through: db.estimatorSubsList }); 

estimatorSubsList IDおよび他のフィールドを有しているが、私は特定のIDとestimatorListのデータベースを照会し、下請業者と関連subcontractor(及びテーブルを返す場合、それはまた

db.contact.hasMany(db.estimatorSubsList); 

介しcontactに関連付けられています)これに関連する -

すべての正しい情報を返します。各subcontractorオブジェクト内にcontactIdを含むestimatorSubsListを自動的に返します。 EG:

estimatorSubsList: 
{ contactId: 1 
    createdAt: "" 
    estimatorListId: 1 
    id:2 
    otherFields:false 
    subcontractorId: 2 
    updatedAt:"" 
} 

私の質問は、contactIdだけでなく、連絡先レコード全体を取得することができますか?返されるデフォルトの情報を変更する方法やそれが可能であるかどうかはわかりません。私はestimatorSubsListモデルを含めて試しましたが、それにはcontactが含まれていましたが、estimatorSubsListを含めようとしていません。

乾杯すべて

+0

属性オプションを使用して属性を組み込み、変更することができます。それはすべて文書化されています – felixfbecker

+0

こんにちは@felixfbecker、 私は過去数日間ドキュメントを読んできましたが、解決策を見つけることができないようです。私が特に調べなければならない見出しがありますか?私はネスティングを理解していますが、自動的に返されるものを変更する方法はわかりません。上のjson、私がestimatorListをクエリするとき。私はestimatorSubsList自体を呼び出すのではなく、そのサブコントラクターに返されます。私は返品のその部分に連絡先を含めると思います。 あなたの助けをありがとう – Porksoda

+0

@felixfbeckerを助けてください、私はまだ解決策を見つけることができません。私は、私のテーブルdb.estimatorSubsListを介して関連付けられているdb.contactを返したいと思います。苦しい! **から**まで**を使用して属性を変更する方法はわかりましたが、私のスルー/ジョインテーブルに関連付けられたdb.contactsモデルを返す方法はまだ見つかりません。 – Porksoda

答えて

0

スルーリレーションテーブルには関連付けることはできません。代わりに、別のモデルとしてモデル化し、そのように含まれている必要があります

EstimatorList.findAll({ 
    include: [{ 
    model: EstimatorSubsList, 
    include: [Contact, Subcontractor] 
    }] 
}) 

をあなたは両方の方向に設定したすべての関連を持っていることを確認してください。

+0

ありがとうございました!頭痛が解決しました!私はあなたが言ったようにして、私のモデルと関連を再構成し、ネストしたインクルードを使用しました。もう一度おねがいします@felixfbecker – Porksoda

関連する問題