gpt4 book ai didi

mysql - 嵌套条件包含在 Sequelize 中

转载 作者:行者123 更新时间:2023-11-29 06:37:23 25 4
gpt4 key购买 nike

我有一个包含 3 个实体的模型:文档、员工和经理。文档属于员工,员工属于经理。我的目标是检索经理员工的所有文档。

我的代码正在运行

Document.findAll({
include: [{
model: models.Employee,
required: true,
as: 'employee',
include: [{
model: models.Manager,
required: true,
as: 'manager',
}],
}],

但我并不是很满意,我希望我的 where 条件超出我的范围,但当我尝试时

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
}

关于mysql - 嵌套条件包含在 Sequelize 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53195577/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com