2016-07-06 117 views
3

所以從sequelize請求組通過時,如下:Sequelize組通過與協會包括ID

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沒有從workingCalendar這個id

我已經發現,對於關聯,屬性應該是一個空數組,並且可以工作,但不適用於主對象,因爲我只需要3列。

回答

0

所以這是不可能的。 ORM需要與數據庫的關係,這是通過id完成的;如果沒有這個ID就無法得到它。

然而,你可以做的是做一個帶有後綴的原始查詢。

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 
    } 
) 

希望這有助於任何人都掙扎過。