gpt4 book ai didi

node.js - 间接关联的 Sequelize

转载 作者:太空宇宙 更新时间:2023-11-03 21:53:28 24 4
gpt4 key购买 nike

我有 3 个表,分别名为项目、工作区、 View ,并且关联为

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

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

我需要连接这 3 个表才能获取以下查询的输出

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"

views表中不存在project_id,只能通过workspace关联 View ,如何实现。

最佳答案

尝试以下

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}
]
});

关于node.js - 间接关联的 Sequelize ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47198051/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com