Sequelize 中的 WhereHas 方法
Posted
技术标签:
【中文标题】Sequelize 中的 WhereHas 方法【英文标题】:WhereHas method in Sequelize 【发布时间】:2018-08-07 20:28:59 【问题描述】:Sequelize 让我想起了 Laravel 中的 Eloquent 库,但我找不到类似于允许使用关联表过滤记录的方法 WhereHas 的任何东西。
假设我需要选择组中 ID = 1 的所有用户,然后我可以使用下面的查询,但是我必须从结果中提取用户。
let group = group.findOne(
include: [
as: 'users',
model: schema.users
],
where:
id: groupId
)
let users = group.users;
有没有像 WhereHas 这样的方法,我可以使用它来仅为用户创建查询,然后使用与组的关联来过滤它们?
let users = group.findAll(
whereHas: [
as: 'groups',
model: schema.groups,
where:
id: groupId // something like this, group is used for filtering only
]
)
【问题讨论】:
【参考方案1】:我遇到了同样的问题,我的解决方案是包含选项中的required:true
。如果要查找所有加入群组的用户,可以使用以下代码:
let users = users.findAll(
include: [
as: 'groups',
model: schema.groups,
required:true,
where:
id: groupId
],
)
【讨论】:
这对我不起作用。它仍然过滤所有在 id 上不匹配的行以上是关于Sequelize 中的 WhereHas 方法的主要内容,如果未能解决你的问题,请参考以下文章