sql >> Databasteknik >  >> RDS >> Mysql

Ändra modellens tabellnamn körtid

Du bör aldrig lagra någon form av information som årtal som tabellnamn sedan dess data. Du bör lagra dem som separata tabellposter, som faktiska användbara data.

Ändra company_historical_<year> till bara company_historical och skapa en ny tabell som heter company_historical_years som bara har alla möjliga år företagshistoriska poster kan ha.

Skapa sedan en relation mellan företagshistoriska posten och de relaterade företagets historiska år inträde.

Så något i stil med:

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

och sedan kan du fråga det med:

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

detta ger dig ett enda CompanyHistoricalYears post och alla CompanyHistorical poster som är inom det året.

Om inget av detta är vettigt, kommentera gärna med eventuella frågor.




  1. Tom sida på Opencart Admin-sidan

  2. Hur jämför jag två CLOB-värden i Oracle

  3. PHP/MySQL:Modellera upprepande händelser i en databas men fråga efter datumintervall

  4. MySQL-angiven nyckel var för lång