Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

मॉडल का टेबल नाम रनटाइम बदलें

आपको कभी भी किसी भी प्रकार की जानकारी जैसे वर्षों को टेबल नाम के रूप में उसके डेटा के रूप में संग्रहीत नहीं करना चाहिए। आपको उन्हें वास्तविक प्रयोग करने योग्य डेटा के रूप में अलग तालिका प्रविष्टियों के रूप में संग्रहीत करना चाहिए।

company_historical_<year> बदलें सिर्फ company_historical . के लिए और company_historical_years . नामक एक नई तालिका बनाएं जिसमें कंपनी ऐतिहासिक . के सभी संभावित वर्ष हैं प्रविष्टियां हो सकती हैं।

फिर कंपनी ऐतिहासिक . के बीच संबंध बनाएं प्रविष्टि और संबंधित कंपनी के ऐतिहासिक वर्ष प्रवेश।

तो कुछ इस तरह:

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

और फिर आप इसके साथ क्वेरी कर सकते हैं:

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

यह आपको एक ही CompanyHistoricalYears . देगा प्रविष्टि और सभी CompanyHistorical प्रविष्टियाँ जो उस वर्ष के भीतर हैं।

यदि इनमें से कोई भी समझ में नहीं आता है तो बेझिझक किसी भी प्रश्न के साथ टिप्पणी करें।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. डेटाबेस विवरण कैसे प्राप्त करें ओपनकार्ट में विचार है

  2. रूबी ऑन रेल्स को दूरस्थ mysql डेटाबेस से कनेक्ट नहीं कर सकता

  3. MySQL - मारियाडीबी - बहुत पहले संग्रहित प्रक्रिया लिखना

  4. GROUP BY के बिना समेकित क्वेरी

  5. जूक मौजूदा बोली का विस्तार करता है। हाइव बोली को अपाचे करने के लिए MySQL बोली को अपनाएं