sql >> Base de Datos >  >> RDS >> Mysql

Cambiar el tiempo de ejecución del nombre de la tabla del modelo

Nunca debe almacenar ningún tipo de información como años como nombres de tablas desde sus datos. Debe almacenarlos como entradas de tabla separadas, como datos utilizables reales.

Cambiar company_historical_<year> a solo company_historical y cree una nueva tabla llamada company_historical_years que tiene todos los años posibles del Histórico de la empresa las entradas pueden tener.

A continuación, cree una relación entre el Histórico de la empresa entrada y los años históricos de la empresa relacionados entrada.

Así que algo como:

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);
        }
    }
};

y luego puedes consultarlo con:

CompanyHistoricalYears.findOne({
    where: {
        year: 2011, // or you can use "new Date().getFullYear()"
    },
    include: [CompanyHistorical]
});

esto le dará un solo CompanyHistoricalYears entrada y todo el CompanyHistorical entradas que están dentro de ese año.

Si nada de esto tiene sentido, siéntase libre de comentar con cualquier pregunta.