2017-02-15 3 views
0

Ich habe belongsTo Beziehung wie folgt aus:Ist es möglich, zusätzliches Feld in Sequelize-Beziehung hinzuzufügen?

classMethods: { 
    associate: function(models) { 
     User.belongsTo(models.Prefs, {timestamps: false, foreignKey: 'Type', targetKey: 'UserType'}) 

    } 
} 

das ist

LEFT OUTER JOIN `prefs` AS `Prefs` ON `User`.`Type` = `Prefs`.`UserType` 

Das Problem erzeugt, dass ich auch wie zusätzliche Überprüfung hinzufügen

AND `Prefs`.`Section` = 'GLOBAL' 

Ist es möglich?

Antwort

1

Ich glaube, das ist ein Duplikat von Sequelize - Join with multiple column .

Sie benötigen individuelle ON Zustand in der JOIN Klausel

User.findAll({ 
    include: [ 
     { 
      model: Prefs, 
      on: { 
       Type: db.sequelize.where(db.sequelize.col("User.Type"), "=", db.sequelize.col("Prefs.UserType")), 
       Section: 'GLOBAL' 
      }, 
      attributes: [] // do not return any columns of Prefs table 
     } 
    ] 
}).then((users) => { 
    // resulting users... 
}); 

EDIT

ich verwenden glauben scope ist das, was Sie suchen. Versuchen Sie es zur Vereinigung von

classMethods: { 
    associate: function(models) { 
     User.belongsTo(
      models.Prefs, 
      { 
       timestamps: false, 
       foreignKey: 'Type', 
       targetKey: 'UserType', 
       scope: { Section: 'GLOBAL' } 
      } 
     ); 
    }  
} 
+0

Ich muss angeben, dies in Modellklasse – Kin

+0

ich die Antwort aktualisiert, ich hoffe, diese wird Ihnen helfen. – piotrbienias

Verwandte Themen