我正在尝试使用sequelize查询连接表: 这是模型:
db.client.belongsToMany(db.user, {
through: db.clientUser,
onDelete: 'cascade',
});
db.user.belongsToMany(db.client, {
through: db.clientUser,
});
这就是我想要做的事情:
db.user.findAll({
where: {
group_id: 1,
},
include: [{
model: db.clientUser,
where: {
is_manager: 1,
}
}],
raw: true,
})
但是我收到以下错误:client_user is not associated to user!
知道这个问题的原因是什么?
答案 0 :(得分:2)
您在client
到 user
之间声明了clientUser
之间的关系。虽然很迂腐,但它的抱怨在技术上是正确的:client
和clientUser
之间没有明确宣布的关系。也不应该:你的belongsToMany
关系应该照顾到这一点。您的查询可以调整为与此关系一起使用。
注意:我不知道在哪些表中找到了group_id和is_manager。它们可能需要随意乱转。
db.user.findAll({
where: {
group_id: 1,
},
include: [{
model: db.client,
through: {
where: {
is_manager: 1, // Assuming clientUser.is_manager?
},
}],
raw: true,
})
答案 1 :(得分:0)
为了执行连接,您必须在模型声明中指定每个模型与您要执行的其他模型的关联。像belongsTo,hasMany等协会。 阅读所有相关内容here