[英]Where condition in nested include in Sequelize
我有一个包含3个实体的模型,即文档,员工和经理。 一个文档属于一个雇员,一个雇员属于一个经理。 我的目标是检索经理员工的所有文件。
我的代码正在工作
Document.findAll({
include: [{
model: models.Employee,
required: true,
as: 'employee',
include: [{
model: models.Manager,
required: true,
as: 'manager',
}],
}],
但是我不是很满意,我想让我的条件超出我的包含范围,但是当我尝试时
where {
'employee.manager.id': id
}
引发错误。
是否可以在include之外设置where条件?
编辑:
我将代码更改为
Document.findAll({
where: {'$employee.manager.id$': id},
include: [{
model: models.Employee,
required: true,
as: 'employee',
include: [{
model: models.Manager,
required: true,
as: 'manager',
where: { id: managerId },
}],
}],
它正在工作。
现在,我想完善我的模型。 每个文档都属于一种类型(管理,评估...),我想为每个经理检索每种类型的最新文档。 我使用了工作正常的订单,并尝试使用工作不正常的组
order: [ [ 'updatedAt', 'DESC' ]],
group: ['type'],
我收到以下消息:列\\“ Document.id \\”必须出现在GROUP BY子句中或在聚合函数中使用。
知道我在做什么错吗?
是的,你可以这么做 ,
当前问题 :
where {
'employee.manager.id': id // <--- Here 'employee.manager.id' cosidered as whole column name
}
解决方案:
where {
'$employee.manager.id$': id //<--- To make sequlize realize you need to place it b/w $$ ,
//or
sequelize.col('employee.manager.id') : id // <--- You can try this also
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.