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

SequelizeJS - hasMany to hasMany trên cùng một bảng với một bảng tham gia

Vì những gì bạn đang cố gắng làm là một liên kết tự, bạn chỉ cần gọi hasMany một lần, điều này sẽ tạo ra một bảng nối

User.hasMany(User, { as: 'Contacts', joinTableName: 'userHasContacts'})

Điều này sẽ tạo bảng userHasContacts dưới dạng:

CREATE TABLE IF NOT EXISTS `userHasContacts` (`userId` INTEGER , `ContactsId` INTEGER , `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL, PRIMARY KEY (`userId`,`ContactsId`)) ENGINE=InnoDB;

Sau đó, để tìm người dùng và địa chỉ liên hệ của họ, bạn có thể thực hiện:

User.find({ where: ..., include: [{model: User, as: 'Contacts'}]})



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách làm cho các bảng MySQL được lập chỉ mục tốt tham gia một cách hiệu quả

  2. Kích thước hàng quá lớn (> 8126), tôi có thể thay đổi InnoDB thành MyISAM được không

  3. MySQL giải thích cho các truy vấn DELETE

  4. Duy trì thứ tự trong truy vấn MySQL IN

  5. Đặt hàng Chọn dựa trên kết quả tham gia (Sắp xếp cuộc trò chuyện theo tin nhắn cuối cùng được gửi)