续集 | Return 如果 hasMany 关联与它们的 where 条件匹配则结果
Sequelize | Return results if either hasMany association matches their where conditions
我有模型 A、B 和 C。
A 与 B & C(和 B & C 有一个 belongsTo 关联回到 A )
我想要 return A 的记录,其中 B.b_column = 'b' OR C.c_column = 'c' .
我目前的方法是尝试使用 required: false 在 where's 但这只是 returns 所有A 的记录和关联(如果存在)。我也尝试在关联上使用 separate: true,但它似乎仍然带回了比我想要的更多的记录。
var results = await A.all({
include: [
{
model: B, as: "Bs",
where: { b_column: "b"},
separate: true
},
{
model: C, as: "Cs",
where: {c_column: "c"},
separate: true
},
]
});
您需要做的就是从根级别查询
给你:
A.all({ // <------ I think this should be A not B as per your question
include: [
{
model: B, as: "Bs"
},
{
model: C, as: "Cs"
},
],
where : {
$or : [
{ 'Bs.b_column' : "b" }, // <---- Might have to change table alias name
{ 'Cs.c_column' : "c" }
]
}
});
我有模型 A、B 和 C。
A 与 B & C(和 B & C 有一个 belongsTo 关联回到 A )
我想要 return A 的记录,其中 B.b_column = 'b' OR C.c_column = 'c' .
我目前的方法是尝试使用 required: false 在 where's 但这只是 returns 所有A 的记录和关联(如果存在)。我也尝试在关联上使用 separate: true,但它似乎仍然带回了比我想要的更多的记录。
var results = await A.all({
include: [
{
model: B, as: "Bs",
where: { b_column: "b"},
separate: true
},
{
model: C, as: "Cs",
where: {c_column: "c"},
separate: true
},
]
});
您需要做的就是从根级别查询
给你:
A.all({ // <------ I think this should be A not B as per your question
include: [
{
model: B, as: "Bs"
},
{
model: C, as: "Cs"
},
],
where : {
$or : [
{ 'Bs.b_column' : "b" }, // <---- Might have to change table alias name
{ 'Cs.c_column' : "c" }
]
}
});