sql >> Databáze >  >> RDS >> Mysql

Změnit runtime názvu tabulky modelu

Nikdy byste neměli ukládat žádné informace, jako jsou roky, jako názvy tabulek od jejich dat. Měli byste je uložit jako samostatné položky tabulky, jako skutečně použitelná data.

Změňte company_historical_<year> pouze company_historical a vytvořte novou tabulku s názvem company_historical_years která má právě všechny možné roky Firemní historické položky mohou mít.

Poté vytvořte vztah mezi historií společnosti záznam a související Historická léta společnosti vstup.

Takže něco jako:

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

a poté jej můžete dotazovat pomocí:

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

tím získáte jeden CompanyHistoricalYears záznam a všechny CompanyHistorical záznamy, které jsou v daném roce.

Pokud nic z toho nedává smysl, neváhejte se vyjádřit s jakýmikoli dotazy.




  1. Proč mysql hit index při zalamování sloupců s funkcí data

  2. T-SQL:Jak používat parametry v dynamickém SQL?

  3. Přístup odepřen pro uživatele 'root'@'localhost' (s použitím hesla:ANO) - Žádná oprávnění?

  4. Získat název sloupce místo hodnoty sloupce