[英]How to reference foreign key to another foreign key in sequelize?
I have table 3 tables.我有表 3 表。 Versions table has a reference to Project table via ProjectID. Versions 表通过 ProjectID 引用了 Project 表。 Then List table references ProjectID (which is a foriegn key) in the Versions table.然后在 Versions 表中列出表引用 ProjectID(这是一个外键)。
List table has an "indirect" reference to Project table列表表具有对项目表的“间接”引用
Project Table
---------------
ProjectID
Versions Table
---------------
VersionID
ProjectID (fk to project table) (UNIQUE constraint added)
List Table
--------------
ListID
VersionID (fk to version table)
ProjectID (fk to fk in version table)
In sequilize I have the the 3 models defined.在 sequilize 中,我定义了 3 个模型。 And in List model here's how i am creating an association via:在列表模型中,这是我通过以下方式创建关联的方式:
// Create foreign keys
List.belongsTo(Versions, {
onDelete: "cascade",
foreignKey: "VersionID"
});
// Create foreign keys
ConsolidatedList.belongsTo(Versions, {
onDelete: "cascade",
foreignKey: "ProjectID"
});
*
*ISSUE : For List model, sequilize on ProjectID field creates a reference to VersionID (pk) instead of ProjectID field(fk) in Versions table!** *问题:对于列表模型,在 ProjectID 字段上的 sequilize 会在版本表中创建对 VersionID (pk)而不是ProjectID 字段 (fk) 的引用!**
An exact query that is run by sequilize (see bolded):由 sequilize 运行的精确查询(见粗体):
Executing (default): CREATE TABLE IF NOT EXISTS List
( ID
INTEGER auto_increment , ProjectID
INTEGER, VersionID
INTEGER, PRIMARY KEY ( ID
), FOREIGN KEY ( ProjectID
) REFERENCES Versions
( VersionID
) ON DELETE CASCADE ON UPDATE CASCADE , FOREIGN KEY ( VersionID
) REFERENCES Versions
( VersionID
) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE=InnoDB;执行(默认):CREATE TABLE IF NOT EXISTS List
( ID
INTEGER auto_increment , ProjectID
INTEGER, VersionID
INTEGER, PRIMARY KEY ( ID
), FOREIGN KEY ( ProjectID
) REFERENCES Versions
( VersionID
) ON DELETE CASCADE ON UPDATE CASCADE , FOREIGN KEY ( VersionID
) REFERENCES Versions
( VersionID
) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE=InnoDB;
You need to define Sequelize associations as mentioned below -您需要定义如下所述的 Sequelize 关联 -
List.belongsTo(Versions, {
onDelete: "cascade",
foreignKey: "VersionID",
targetKey: "VersionID"
});
List.belongsTo(Versions, {
onDelete: "cascade",
foreignKey: "ProjectID",
targetKey: "ProjectID"
});
I hope it helps!我希望它有帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.