通过关联提升群组并包含身份

时间:2016-07-06 13:02:22

标签: group-by sequelize.js

所以当从续集中请求一个小组时如下:

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我似乎无法摆脱这一点。 如何确保续集不会从id获取此workingCalendar

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

1 个答案:

答案 0 :(得分:0)

所以这是不可能的。 ORM需要与数据库的关系,这是通过id完成的;如果没有身份证明就无法得到这个。

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

makefile

希望这有助于任何人挣扎。