Sequelize напоминает мне библиотеку Eloquent в Laravel, но я не могу найти ничего похожего на метод Где, который позволяет фильтровать записи с использованием связанных таблиц.
Скажем, мне нужно выбрать всех пользователей в группе с 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
}
}]
})


У меня была такая же проблема, и мое решение - required:true в опции включения. Если вы хотите найти всех пользователей, которые присоединяются к группе, вы можете использовать приведенный ниже код:
let users = users.findAll({
include: [{
as: 'groups',
model: schema.groups,
required:true,
where: {
id: groupId
}
}],
})
С моей стороны это не работает. Он по-прежнему фильтрует все строки без совпадения по идентификатору