2017-10-11 1 views
0

Was ist die beste Möglichkeit, die gleiche Tabelle zu vielen Tabellen zuzuordnen. Ich habe 3 Tabellen in MySQL-Datenbank, Besitzer, Haustiere, Beiträge. Wo Besitzer viele Haustiere hat und auch Besitzer hat viele Beiträge. Als ich machen den Verein in der Post und Haustiere Modell alsSequelize Assoziation mit einer Tabelle "hasMany" andere Tabellen

Posts.associate = function(models) { 
    Posts.belongsTo(models.Owners, { 
     foreignKey: { 
      allowNull: false 
     } 
    }); 
}; 
Pets.associate = function(models) { 
    Pets.belongsTo(models.Owners, { 
     foreignKey: { 
      allowNull: false 
     } 
    }); 
}; 

Und im Owners Modell folgt Ich habe versucht, den Verein zu machen, viele hat, sowohl für wie folgt aus:

Owners.associate = function(models) { 
    Owners.hasMany(models.Pets, { 
     onDelete: "cascade" 
    }); 
}; 
Owners.associate = function(models) { 
    Owners.hasMany(models.Posts, { 
     onDelete: "cascade" 
    }); 
}; 

aber ich halte beim Ermitteln von Fehlern, dass eine der Tabellen nicht mit der Owners-Tabelle verknüpft ist. Gibt es einen besseren Weg, um diese Vereinigung funktionieren zu lassen?

Antwort

0

Sie müssen nur hasMany im Owners-Modell verwenden, bei den anderen Modellen ist es nicht notwendig, aneigniesTo zu verwenden. Wenn Sie hasMany verwenden, wird die OwnerId auf dem Zielmodell erstellt. Ich empfehle, as zu verwenden, damit Sie den Schlüssel erkennen können, wenn Sie ein Include für Abfragen durchführen müssen. Auch Sie definieren nur einmal die assoziierte Funktion:

Owners.associate = function(models) { 
    Owners.hasMany(models.Pets, { 
    as: 'OwnerPets', 
    onDelete: "cascade" 
    }); 
    Owners.hasMany(models.Posts, { 
    as: 'OwnerPosts', 
    onDelete: "cascade" 
    }); 
}; 
+0

ok danke! werde das versuchen. –

Verwandte Themen