我有以下数据库表:事件,用户和收藏夹。
一个事件可以被许多用户喜欢,一个用户可以喜欢许多事件。
收藏夹表架构为:
CREATE TABLE favorites
(
user_id INTEGER REFERENCES users(id) ON DELETE CASCADE,
event_id INTEGER REFERENCES events(id) ON DELETE CASCADE,
PRIMARY KEY (user_id, event_id)
);
我需要的是一个查询,该查询返回所有事件和有关每个事件是否受用户喜欢的事件(最好是布尔值)的信息(其ID可用,您可以将其称为user_id)。
到目前为止,我已经尝试过:
Event.findAll({
include: {
model: sequelize.models.favorites,
required: false,
where: {
user_id: user_id
}
}
});
在事件模型中,我具有关联
models.events.belongsToMany(models.users, { through: 'favorites'});
在用户模型中,我具有关联
models.users.belongsToMany(models.events, { through: 'favorites'});
答案 0 :(得分:0)
设法提出解决方案:
Event.findAll({
include: {
model: sequelize.models.users,
as: 'favorite',
where: {
id: user_id
},
required: false
}
});
具有以下关联:
models.users.belongsToMany(models.events, { through: 'favorites', as: 'favorite'});
models.events.belongsToMany(models.users, { through: 'favorites', as: 'favorite'});