续集在关联模型上的位置
Posted
技术标签:
【中文标题】续集在关联模型上的位置【英文标题】:sequelize where on assosiated model 【发布时间】: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');
【问题讨论】:
你能显示代码定义模型组和用户吗? 【参考方案1】:你可以试试并告诉我:)
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);
);
【讨论】:
以上是关于续集在关联模型上的位置的主要内容,如果未能解决你的问题,请参考以下文章