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