在sequelize中我有电路板和用户设置,有多对多关联如下
User.hasMany(Board, {through: BoardUsers});
Board.hasMany(User, {through:BoardUsers});
无论如何,使用where子句我可以找到属于某个板块列表的用户。例如,让我说我有3个板,我想找到属于板1或3的前20个用户(使用默认排序顺序)。有没有办法在不为每个板执行单独的查找的情况下执行此操作,然后手动组合结果。
我希望能够做到这样的事情:
User.findAll({where:{board: [1,3]}});
但我似乎找不到办法做到这一点。
据我所知,等效的SQL会是这样的:
SELECT * FROM `users` WHERE id IN (SELECT userID FROM boardusers WHERE boardId IN (1,3))
但我希望能够通过ORM来做到这一点。
答案 0 :(得分:2)
虽然我不确定您是否可以直接执行此操作,但您始终可以查询Boards
并急切地获取用户。
这些方面的东西:
Board.findAll({where: {id: [1,3]}}, { include: [ User ] })
答案 1 :(得分:0)
相当迟到的反应,但只是有同样的问题,这就是我如何让它在Sequelize 3.24.0中工作(类似这样);
User.findAll({ include: [{ model: Board, where: { $in: [1,3] }}] });