如何在 sequelize 中包含相关行数
How to include number of related rows in sequelize
我有两个模型,一个会话模型和一个注册模型。 Register 模型有 Session 模型的外键。
在 Sequelize 中,我将关系描述为:
Session.hasMany(Register, {
foreignKey: {
allowNull: false,
},
});
Register.belongsTo(Session);
我想查询所有的 Session 并在一个名为 num_registers 的键中包含与 Session 相关的 Register 对象的数量。
例如,
[{
id: 4,
name: 'a session',
num_registers: 43
}]
编辑:
假设 Register 模型也有一个 finished
值,它是一个布尔值,我将如何在上面做同样的事情,但也只过滤属于 finished
值为 false 的会话的 Register 对象。
我想你需要使用子查询 sequelize.literal
:\
Session.findAll({
attributes: {
include: [
[
sequelize.literal(`(
SELECT COUNT(*)
FROM Registers AS register
WHERE
register.sessionId = session.id
AND
register.finished = true
)`),
'num_registers'
]
]
}
});
我有两个模型,一个会话模型和一个注册模型。 Register 模型有 Session 模型的外键。
在 Sequelize 中,我将关系描述为:
Session.hasMany(Register, {
foreignKey: {
allowNull: false,
},
});
Register.belongsTo(Session);
我想查询所有的 Session 并在一个名为 num_registers 的键中包含与 Session 相关的 Register 对象的数量。
例如,
[{
id: 4,
name: 'a session',
num_registers: 43
}]
编辑:
假设 Register 模型也有一个 finished
值,它是一个布尔值,我将如何在上面做同样的事情,但也只过滤属于 finished
值为 false 的会话的 Register 对象。
我想你需要使用子查询 sequelize.literal
:\
Session.findAll({
attributes: {
include: [
[
sequelize.literal(`(
SELECT COUNT(*)
FROM Registers AS register
WHERE
register.sessionId = session.id
AND
register.finished = true
)`),
'num_registers'
]
]
}
});