【问题标题】:sequelize indirect associations续集间接关联
【发布时间】:2017-11-09 18:40:21
【问题描述】:

我有 3 个名为项目、工作区、视图的表,关联是

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关联views,如何实现。

【问题讨论】:

    标签: node.js sequelize.js


    【解决方案1】:

    尝试关注

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

    【讨论】:

    • hii 试试这个逻辑,告诉我它是否能给你想要的结果。
    猜你喜欢
    • 1970-01-01
    • 2017-05-30
    • 2019-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-02
    • 1970-01-01
    相关资源
    最近更新 更多