【发布时间】:2019-07-26 11:36:59
【问题描述】:
我有三个模型用户、组、用户组。 User 和 Group 通过 UserGroup 模型具有多对多的关系。 我想获得包含所有组成员的组,但也只想要用户所属的那些组。这是我的续集查询。
Group.findAll({
include: ['members'],
where: {
'$members.id$': user_id
}
});
使用上面代码中的 where 条件,组会根据 user_id 进行过滤。 IE。它返回与 ID 等于 user_id 的用户模型相关的组。但是这个查询并没有给出所有成员。它只返回一个 id 等于 user_id 的用户。这意味着“where”条件不仅过滤组,还过滤组成员。
这是我的联想
Group.hasMany(UserGroup, {as: {singular: 'usergroup', plural: 'usergroups'}, foreignKey: 'group_id'});
Group.belongsToMany(User, {as: {singular: 'member', plural: 'members'}, through: UserGroup});
UserGroup.belongsTo(User, {as: 'member', foreignKey: 'user_id'});
UserGroup.belongsTo(Group, {as: 'group', foreignKey: 'group_id'});
【问题讨论】:
-
你能显示代码定义模型组和用户吗?
标签: mysql node.js sequelize.js