我有三个以嵌套顺序相互关联的表,比如A hasManyB和B hasOneC。
确切地说,把我表名看作是一个作业、一个问题和一个答案。
虽然作业会有这么多的问题,而问题会有一个答案,由每个学生回答。
现在我需要一个过滤器来获取学生未回答的问题。
我的查询如下所示,
const assignments = await Assignments.findAndCountAll({
where: [
condition,
sequelize.where(sequelize.col('questions.answer.id'), 'IS', null),
],
include: [
{
model: AssignmentQuestion,
as: 'questions',
duplicating: false,
include: {
model: AssignmentQuestionAnswer,
as: 'answer',
where: {
stdentId: req.user.id,
},
required: false,
},
},
],
distinct: true,
offset: 1,
limit: 10,
order: [['createdAt, 'asc']],
});
这个代码的问题是,即使限制为10,总计数为12,我在第1页也只能得到6行。
Assignments.hasMany(models.AssignmentQuestion, {
foreignKey: 'assignmentId',
as: 'questions',
});
AssignmentQuestion.hasOne(models.AssignmentQuestionAnswer, {
foreignKey: 'questionId',
as: 'answer',
});
是否有解决此问题的方法???
1条答案
按热度按时间xzabzqsa1#
如果在嵌套的include中使用
where:{id: null, stdentId: req.user.id,}
而不是sequelize.where()
,会怎么样?如果
sequelize.where
超过了一个required:false
或类似的东西,你可以共享logginsql?Idk(我怀疑不是,但你可以试试?)