我有一个User
模型,一个Message
模型和一个Group
模型。 Message belongsTo Group
,Group belongsToMany User(group_members, { as: 'members' })
我想查询所有消息,其中特定用户是其组的成员。我是在include
上使用Message
来实现的,就像这样:
include: [ {
model: Group,
include: {
association: 'members',
where: {
id: userId
}
},
required: true
} ]
但是,这将返回Message.Group.members
作为我检查的用户 only 的数组。这当然是预料之中的,但是如果我希望所有成员(userId
是其中之一)该怎么办?
编辑-This似乎是我想要的。
答案 0 :(得分:1)
您的条件应该在包含之外。通过创建所需的内部联接,您可以像这样过滤结果:
models.Message.findAll({
attributes: [ 'idcustomer', 'firstname', 'lastname' ],
include: [ {
model: Group,
include: {
association: 'members'
}
} ]
where: {
'group.members.id': userId
}
});
这应该有效。