sql >> Database >  >> RDS >> Mysql

Wijzig de tabelnaam van het model runtime

Bewaar nooit enige vorm van informatie zoals jaren als tabelnamen sinds de gegevens. U moet ze opslaan als afzonderlijke tabelgegevens, als daadwerkelijk bruikbare gegevens.

Wijzig company_historical_<year> naar gewoon company_historical en maak een nieuwe tabel met de naam company_historical_years die net alle mogelijke jaren heeft van de Bedrijfsgeschiedenis inzendingen kunnen hebben.

Maak vervolgens een relatie tussen de Bedrijfsgeschiedenis vermelding en de gerelateerde Historische jaren van het bedrijf invoer.

Dus zoiets als:

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

en dan kun je het opvragen met:

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

dit geeft je een enkele CompanyHistoricalYears invoer en alle CompanyHistorical inzendingen die binnen dat jaar vallen.

Als dit allemaal niet logisch is, voel je dan vrij om commentaar te geven met eventuele vragen.




  1. PDO bind_param is een ongedefinieerde methode

  2. Willekeurige invoer selecteren uit MySQL-database

  3. Hoe vermeld ik alle kolommen in een tabel?

  4. Hoe controleer ik of de waarde al in de tabel bestaat?