从相应的 SQL 中继承嵌套的 where 子句
Sequelize nested where clause from corresponding SQL
给出以下 SQL 查询
SELECT *
FROM `table_name`
WHERE
(`year` > YEAR('2021-01-01') OR
(`year` = YEAR('2021-01-01') AND
`weekNumber` >= WEEK('2021-01-01'))
)
AND (`year` < YEAR('2021-10-11') OR
(`year` = YEAR('2021-10-11') AND
`weekNumber` <= WEEK('2021-10-11')))
您将如何使用 Sequelize ORM 生成相同的查询?我正在使用 Sequelize V.6
像这样使用 Op.and
、Op.or
和 Sequelize.fn
很容易:
const rows = await Model.findAll({
where: {
[Op.and]: [
{
[Op.or]: [{
year: {
[Op.gt]: Sequelize.fn('YEAR', '2021-01-01')
}
}, {
year: Sequelize.fn('YEAR', '2021-01-01'),
weekNumber: {
[Op.gte]: Sequelize.fn('WEEK', '2021-01-01')
}
}
]
},
{
[Op.or]: [{
year: {
[Op.lt]: Sequelize.fn('YEAR', '2021-10-11')
}
}, {
year: Sequelize.fn('YEAR', '2021-10-11'),
weekNumber: {
[Op.lte]: Sequelize.fn('WEEK', '2021-10-11')
}
}
]
}
]
}
})
给出以下 SQL 查询
SELECT *
FROM `table_name`
WHERE
(`year` > YEAR('2021-01-01') OR
(`year` = YEAR('2021-01-01') AND
`weekNumber` >= WEEK('2021-01-01'))
)
AND (`year` < YEAR('2021-10-11') OR
(`year` = YEAR('2021-10-11') AND
`weekNumber` <= WEEK('2021-10-11')))
您将如何使用 Sequelize ORM 生成相同的查询?我正在使用 Sequelize V.6
像这样使用 Op.and
、Op.or
和 Sequelize.fn
很容易:
const rows = await Model.findAll({
where: {
[Op.and]: [
{
[Op.or]: [{
year: {
[Op.gt]: Sequelize.fn('YEAR', '2021-01-01')
}
}, {
year: Sequelize.fn('YEAR', '2021-01-01'),
weekNumber: {
[Op.gte]: Sequelize.fn('WEEK', '2021-01-01')
}
}
]
},
{
[Op.or]: [{
year: {
[Op.lt]: Sequelize.fn('YEAR', '2021-10-11')
}
}, {
year: Sequelize.fn('YEAR', '2021-10-11'),
weekNumber: {
[Op.lte]: Sequelize.fn('WEEK', '2021-10-11')
}
}
]
}
]
}
})