Vous ne devez jamais stocker d'informations telles que des années en tant que noms de table depuis ses données. Vous devez les stocker en tant qu'entrées de tableau distinctes, en tant que données réellement utilisables.
Modifier company_historical_<year>
à juste company_historical
et créez une nouvelle table appelée company_historical_years
qui a juste toutes les années possibles l'historique de la société entrées peuvent avoir.
Créez ensuite une relation entre l'historique de l'entreprise l'entrée et les années historiques de l'entreprise associées entrée.
Donc quelque chose comme :
var CompanyHistoricalYears = sequelize.define('company_historical_years', {
year: {
type: Sequelize.INTEGER
},
classMethods: {
associate: function (models) {
CompanyHistoricalYears.hasMany(models.CompanyHistorical);
}
}
};
var CompanyHistorical = sequelize.define('company_historical', {
...
classMethods: {
associate: function (models) {
CompanyHistorical.belongsTo(models.CompanyHistoricalYears);
}
}
};
et ensuite vous pouvez l'interroger avec :
CompanyHistoricalYears.findOne({
where: {
year: 2011, // or you can use "new Date().getFullYear()"
},
include: [CompanyHistorical]
});
cela vous donnera un seul CompanyHistoricalYears
entrée et tous les CompanyHistorical
entrées qui sont dans cette année.
Si rien de tout cela n'a de sens, n'hésitez pas à commenter si vous avez des questions.