Sequelize 中的嵌套内部连接
Nested inner join in Sequelize
我正在尝试使用 Sequelize 内部连接五个表。我知道我必须使用 required: true
进行内部连接。但即使在使用 required: true
之后,它也没有生成我想要实现的查询。在这里,我附上了没有 required: true
语句的代码。我应该如何放置 required: true
语句来内部连接五个表?
const db = require('../models');
const data = await db.A.findAll({
where: conditionA,
include: [{
model: db.B,
where: conditionB,
include: [
{
model: db.C,
where: conditionC,
include: [{
model: db.D,
where: conditionD
}],
},
{
model: db.E,
where: conditionE,
}
]
}]
});
模特协会
db.A.hasMany(db.B);
db.C.hasMany(db.B);
db.E.hasMany(db.B);
db.D.hasMany(db.C);
db.B.belongsTo(db.A);
db.B.belongsTo(db.C);
db.B.belongsTo(db.E);
db.C.belongsTo(db.D);
如有任何帮助,我们将不胜感激。提前致谢。
您应该在 include
选项中为所有模型指定 required: true
并指定 subQuery: false
以使 Sequelize 使用通常的 JOIN 而不是子查询的 JOIN。
我正在尝试使用 Sequelize 内部连接五个表。我知道我必须使用 required: true
进行内部连接。但即使在使用 required: true
之后,它也没有生成我想要实现的查询。在这里,我附上了没有 required: true
语句的代码。我应该如何放置 required: true
语句来内部连接五个表?
const db = require('../models');
const data = await db.A.findAll({
where: conditionA,
include: [{
model: db.B,
where: conditionB,
include: [
{
model: db.C,
where: conditionC,
include: [{
model: db.D,
where: conditionD
}],
},
{
model: db.E,
where: conditionE,
}
]
}]
});
模特协会
db.A.hasMany(db.B);
db.C.hasMany(db.B);
db.E.hasMany(db.B);
db.D.hasMany(db.C);
db.B.belongsTo(db.A);
db.B.belongsTo(db.C);
db.B.belongsTo(db.E);
db.C.belongsTo(db.D);
如有任何帮助,我们将不胜感激。提前致谢。
您应该在 include
选项中为所有模型指定 required: true
并指定 subQuery: false
以使 Sequelize 使用通常的 JOIN 而不是子查询的 JOIN。