Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Thay đổi thời gian chạy tên bảng của mô hình

Bạn không bao giờ nên lưu trữ bất kỳ loại thông tin nào như năm dưới dạng tên bảng kể từ dữ liệu của nó. Bạn nên lưu trữ chúng dưới dạng các mục nhập bảng riêng biệt, dưới dạng dữ liệu có thể sử dụng thực tế.

Thay đổi company_historical_<year> chỉ company_historical và tạo một bảng mới có tên company_historical_years mà chỉ có tất cả các năm có thể là Lịch sử công ty mục nhập có thể có.

Sau đó, tạo mối quan hệ giữa Lịch sử công ty mục nhập và Số năm lịch sử công ty có liên quan mục nhập.

Vì vậy, một cái gì đó như:

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

và sau đó bạn có thể truy vấn nó bằng:

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

điều này sẽ cung cấp cho bạn một CompanyHistoricalYears duy nhất mục nhập và tất cả CompanyHistorical các mục trong năm đó.

Nếu điều này không hợp lý thì hãy bình luận với bất kỳ câu hỏi nào.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tại sao DBI thay đổi ngầm định số nguyên thành chuỗi?

  2. Mô phỏng TO_SECONDS () trong các phiên bản MySQL cũ hơn (<5.5.0)

  3. Hiển thị tất cả các bảng bên trong cơ sở dữ liệu MySQL bằng PHP?

  4. Làm cách nào để tạo khoảng thời gian ngẫu nhiên và thêm nó vào datetime của mysql bằng php?

  5. Tạo liên kết từ mục dòng thời gian của Google Chart