2017-11-09 10 views
2

は、私は3つのプロジェクトという名前のテーブル、ワークスペース、景色を眺めることができますし、協会がsequelize間接的な団体

projects.hasMany(workspace); 
workspace.belongsTo(projects); 

workspace.hasMany(views); 
views.belongsTo(workspace); 

ている私は、私が試したクエリ

select * from projects pro join workspace wrk on pro.id= wrk.project_id 
join views on wrk.id = views.workspace_id 

を次の出力を取得するために、これらの3つのテーブルを結合する必要があります関連

views.belongsTo(projects, { through: workspace.associations.projects }); 

以下はコードです:

View.findAll({ 
    include: [ 
    {model: db.workspaces, required: true}, 
    {model: db.projects, required: true} 
    ] 
}); 

しかし、それは、クエリ

SELECT * 
FROM "views" AS "views" 
INNER JOIN "workspaces" AS "workspace" ON "views"."workspace_id" = "workspace"."id" 
INNER JOIN "projects" AS "project" ON "views"."project_id" = "project"."id" 

がPROJECT_IDが、それを達成することができる唯一のworkspace.Howを通じて意見を関連付けtable.Itビューに存在しませんが生成されます。

答えて

2

はHIIが、それはあなたの望ましい結果を与えるなら、私に教えて、このロジックを試してみてください

Project.hasMany(Workspace,{foreignKey : 'project_id'}); 
Workspace.belongsTo(Project); 

Workspace.hasMany(views,{foreignKey: 'workspace_id'}); 
View.belongsTo(Workspace); 

Workspace.findAll({ 
    include: [ 
    {model: View, required: true}, 
    {model: Project, required: true} 
    ] 
}); 
+0

を以下試してみてください。 –

+0

はいその作業 –