2016-11-12 3 views
2

Ich werde Benutzerdetails als Tabellenstruktur auswählen.Sequelize Js Multi-Level-Tabelle Cascade Join

Tabelle Benutzer Spalten {user_id, region_id, user_name}

Tabelle Region Spalten {region_id, country_id}

Tabelle Land Spalten {country_id, country_name}

Ich habe beitreten Tischmodell als

db.user.hasOne(db.region, {foreignKey:"region_id", targetKey:"region_id"}); 
db.region.hasOne(db.country,{ foreignKey :"country_id", targetKey:"country_id" }); 
db.user.hasOne(db.country,{through:db.region,otherKey :"country_id", foreignKey :"user_id" }); 

Jetzt bin ich goi ng Benutzer Detail enthalten Region Namen auszuwählen und Ländernamen hier ist mein Controller

models.user.findAll(
    { 
    include: [ 
     { 
      model: models.region, 
      model: models.country 
     } 
     ] 
}); 

aber diese Show Benutzer nicht assoziieren mit Land

Bitte rette mich

Antwort

1

sollte Multi-Level sein enthalten beitreten als Ihr Schema

models.user.findAll(
    { 
    include: [ 
     { 
      model: models.region, 
      include:[{model:models.country}] 
     } 
     ] 
}); 

vorausgesetzt, dass der Benutzer in die Region gehört, gehört die Region in das Land Sie können einige Beispiele sind

Eins-zu-Eins-Beziehung mehr über Beziehungen suchen: Sie, als User kann man (hasOne) Profil haben. Und natürlich gilt auch das Gegenteil. Profil (gehört zu) a Benutzer. Ein Benutzer kann nicht mehr als ein Profil haben und ein Profil kann nicht mehreren Benutzern gehören. unter Verwendung der Methode belongsTo

Auch

Wir können die Inverse einer hasOne Beziehung definieren.