这是我的父级模型Providers
module.exports = function(sequelize, DataTypes) {
const Providers = sequelize.define('Providers', {
provider_id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true
},
provider_name: DataTypes.STRING,
address: DataTypes.STRING,
city: DataTypes.STRING,
state: DataTypes.STRING,
zip: DataTypes.STRING,
phone: DataTypes.STRING,
website: DataTypes.STRING,
accepting_new_clients: DataTypes.INTEGER
});
Providers.associate = models => {
Providers.belongsTo(model.Providerclients, {foreignKey: "provider_id" })
}
return Providers;
}
这是我的孩子模型Providerclients
module.exports = function(sequelize, DataTypes) {
const Providerclients = sequelize.define('provider_clients', {
provider_client_id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true
},
provider_id: DataTypes.INTEGER,
client_id: DataTypes.INTEGER
},{});
Providerclients.associate = (models) => {
Providerclients.belongsToMany(models.Providers, {foreignKey: "provider_id"});
};
return Providerclients;
}
这是我的另一个孩子模型Providerinsurance
module.exports = function(sequelize, DataTypes) {
const Providerinsurance = sequelize.define('provider_insurance', {
provider_insurance_id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true
},
provider_id: DataTypes.INTEGER,
insurance_id: DataTypes.INTEGER
},{});
return Providerinsurance;
}
我试图从提供者表中加入提供者客户机表中获取数据。 为了清楚起见,我想以mysql格式运行以下查询
select * from providers as p left join provider_clients as pc on p.provider_id = pc.provider_id left join provider_insurance as pi on p.provider_id = pi.provider_id
正如您在Providers和Providerclients模型中看到的那样,我尝试加入了续集。我收到以下错误
Unhandled rejection SequelizeEagerLoadingError: provider_clients is not associated to Providers!
答案 0 :(得分:0)
这些是您结构中的关联问题。将您的关联更改为hasMany
。
provider.hasMany(clientProvider)
这会将provider id
添加到client provider
中。
http://docs.sequelizejs.com/manual/associations.html#one-to-many-associations--hasmany-
这是摘要
Player.belongsTo(Team) // `teamId` will be added on Player / Source model
User.belongsTo(Company, {foreignKey: 'fk_company'}); // Adds fk_company to User
User.belongsTo(Company, {foreignKey: 'fk_companyname', targetKey: 'name'}); // Adds fk_companyname to User
========================================================================
Coach.hasOne(Team) // `coachId` will be added on Team / Target model
============================================================================
Project.hasMany(User)
This will add the attribute projectId or project_id to User. Instances of Project will get the accessors getWorkers and setWorkers.
Project.hasOne(User)
hasOne will add an attribute projectId to the User model!