Sequelize 关联查询时条件如何设置到where里,而不是on后面?
代码如下
const rolePermission = await SysRolePermissionModel.findOne({
where: { role_id, status: 1 },
// attributes: ['id'],
raw: true,
include: [
{
attributes: [], //下面的where 里出现的位置不对
where: { status: 1, permission, method }, //这里的条件在on 后面接着的,而不是在 where 后面出现的?
model: SysPermissionModel,
required: false
}
]
})
以上代码出来的sql 如下:
SELECT
`sys_role_permission`.`id`,
`sys_role_permission`.`role_id`,
`sys_role_permission`.`permission_id`,
`sys_role_permission`.`status`,
FROM
`sys_role_permission` AS `sys_role_permission`
LEFT OUTER JOIN `sys_permission` AS `sys_permission`
ON `sys_role_permission`.`permission_id` = `sys_permission`.`permission_id`
AND `sys_permission`.`status` = 1
AND `sys_permission`.`permission` = '/sys/user/create'
AND `sys_permission`.`method` = 'POST'
// include 里面的 where 的条件出现了在这里,而我想要的结果应该是出现在下面where 里面
WHERE
`sys_role_permission`.`role_id` = 7
AND `sys_role_permission`.`status` = 1
LIMIT 1;
想要的是这种写法
WHERE
`sys_role_permission`.`role_id` = 7
AND `sys_role_permission`.`status` = 1
AND `sys_permission`.`status` = 1
AND `sys_permission`.`permission` = '/sys/user/create'
AND `sys_permission`.`method` = 'POST'
LIMIT 1;
不知道是哪里设置的不对?求大神?
https://www.sequelize.cn/adva...