繁体   English   中英

续集在关联模型上的位置

[英]sequelize where on assosiated model

我有三个模型用户、组、用户组。 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'});

你能试试吗,让我知道:)

Group.findAll({
  include: ['members'],
  where:{
      id: {
          $in: sequelize.literal(`(select distinct group_id from usergroup where user_id = ${user_id})`)
      }
  }
})
.then(results => {
  console.log(results);
})
.catch(err => {
  console.log('err', err);
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM