gpt4 book ai didi

group-by - Sequelize group by 与关联包括 id

转载 作者:行者123 更新时间:2023-12-03 17:40:07 25 4
gpt4 key购买 nike

因此,当通过 from sequelize 请求组时,如下所示:

return models.WorkingCalendar
.findAll({
attributes: [
'WorkingCalendar.PeriodId',
'WorkingCalendar.date',
'Period.name'
],
include: [
{
model: models.Period,
attributes: []
}
],
where: {
GetSudoId: currentGetsudo.id,
UnitPlantId: unitPlantId
},
group: ['WorkingCalendar.PeriodId',
'WorkingCalendar.date',
'Period.name'],
});

Sequelize 将运行此查询:
SELECT 
[WorkingCalendar].[id],
[WorkingCalendar].[PeriodId],
[WorkingCalendar].[date],
[Period].[name]
FROM [WorkingCalendars] AS [WorkingCalendar]
LEFT OUTER JOIN [Periods] AS [Period] ON [WorkingCalendar].[PeriodId] = [Period].[id]
WHERE [WorkingCalendar].[GetSudoId] = 1 AND [WorkingCalendar].[UnitPlantId] = N'1'
GROUP BY [WorkingCalendar].[PeriodId], [WorkingCalendar].[date], [Period].[name];

然而我从未要求 WorkingCalender.id我似乎无法摆脱它。
我如何确保 Sequelize 不会让我得到这个 id来自 workingCalendar ?

我已经发现,对于关联,属性应该是一个空数组,它可以工作但不适用于主对象,因为我只需要 3 列。

最佳答案

所以这是不可能的。 ORM 需要与数据库的关系,这是通过 id 完成的;没有id就不可能得到这个。

但是,您可以做的是使用 sequelize 进行原始查询。

IE。

return models.sequelize.query(
`SELECT
[WorkingCalendar].[id],
[WorkingCalendar].[PeriodId],
[WorkingCalendar].[date],
[Period].[name]
FROM [WorkingCalendars] AS [WorkingCalendar]
LEFT OUTER JOIN [Periods] AS [Period] ON [WorkingCalendar].[PeriodId] = [Period].[id]
WHERE [WorkingCalendar].[GetSudoId] = :getsudoId AND [WorkingCalendar].[UnitPlantId] = N'1'
GROUP BY [WorkingCalendar].[PeriodId], [WorkingCalendar].[date], [Period].[name]`,
{
replacements: { getsudoId: getsudoId },
type: models.Sequelize.QueryTypes.SELECT
}
)

希望这也能帮助任何挣扎的人。

关于group-by - Sequelize group by 与关联包括 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38224709/

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