将同一个表与多个表关联的最佳方法是什么。我在mysql数据库,Owners,Pets,Posts中有3个表。业主有很多宠物,而业主也有很多帖子。当我在帖子和宠物模型中建立关联时如下
Posts.associate = function(models) {
Posts.belongsTo(models.Owners, {
foreignKey: {
allowNull: false
}
});
};
Pets.associate = function(models) {
Pets.belongsTo(models.Owners, {
foreignKey: {
allowNull: false
}
});
};
在Owners模型中,我试图建立关联,有很多,就像这样:
Owners.associate = function(models) {
Owners.hasMany(models.Pets, {
onDelete: "cascade"
});
};
Owners.associate = function(models) {
Owners.hasMany(models.Posts, {
onDelete: "cascade"
});
};
但我继续得到错误,其中一个表没有与Owners表关联。是否有更好的方法使这种关联有效?
答案 0 :(得分:0)
您只需要在Owners模型上使用hasMany,就不必在其他模型上使用belongsTo。当您使用hasMany时,它会在目标模型上创建OwnerId,我建议使用as
以便您可以识别
如果您需要对查询进行包含,请输入密钥。您只需定义一次关联功能:
Owners.associate = function(models) {
Owners.hasMany(models.Pets, {
as: 'OwnerPets',
onDelete: "cascade"
});
Owners.hasMany(models.Posts, {
as: 'OwnerPosts',
onDelete: "cascade"
});
};