Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Laufzeit des Tabellennamens des Modells ändern

Sie sollten niemals Informationen wie Jahre als Tabellennamen seit ihren Daten speichern. Sie sollten sie als separate Tabelleneinträge als tatsächlich nutzbare Daten speichern.

Ändern Sie company_historical_<year> zu nur company_historical und erstellen Sie eine neue Tabelle namens company_historical_years die nur alle möglichen Jahre der Company Historical enthält Einträge haben können.

Erstellen Sie dann eine Beziehung zwischen dem Unternehmensverlauf Eintrag und die dazugehörigen Unternehmensgeschichte Eintrag.

Also sowas wie:

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

und dann können Sie es abfragen mit:

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

Dadurch erhalten Sie ein einzelnes CompanyHistoricalYears Eintrag und alle CompanyHistorical Einträge innerhalb dieses Jahres.

Wenn nichts davon Sinn macht, dann zögern Sie nicht, mit Fragen zu kommentieren.