Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Ubah runtime nama tabel model

Anda tidak boleh menyimpan informasi apa pun seperti tahun sebagai nama tabel sejak datanya. Anda harus menyimpannya sebagai entri tabel terpisah, sebagai data aktual yang dapat digunakan.

Ubah company_historical_<year> hanya company_historical dan buat tabel baru bernama company_historical_years yang hanya memiliki semua tahun yang mungkin Sejarah Perusahaan entri dapat memiliki.

Kemudian buat hubungan antara Historis Perusahaan entri dan Tahun Historis Perusahaan yang terkait masuk.

Jadi sesuatu seperti:

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

dan kemudian Anda dapat menanyakannya dengan:

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

ini akan memberi Anda satu CompanyHistoricalYears entri dan semua CompanyHistorical entri yang ada dalam tahun tersebut.

Jika ini tidak masuk akal, silakan berkomentar dengan pertanyaan apa pun.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hasilkan mysql erd dengan koneksi

  2. Pencarian Teks di beberapa bidang MySQL

  3. Tidak dapat terhubung ke server mysql dengan MAMP atau dengan Server Komunitas

  4. Bagaimana cara mendapatkan nama kolom dari hasil fungsi terkecil?

  5. ClassNotFoundException dengan Pohon Kacang Elastis dan Tomcat 7