将间接关联关联起来
我有3个表名为项目,工作区,视图和关联
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
我试过一个关联
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关联视图,如何实现。
尝试以下
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} ] });