[英]Sequelize associations (join) erorr: Error: Unknown column
我有 2 個簡單的表:
table: wp_posts
PK ID
post_title
table: wp_postmeta
PK post_id
meta_key
meta_value
運行這段代碼:
wp_posts.hasMany(wp_postmeta , { foreignKey: "post_id" });
wp_postmeta.belongsTo(wp_posts , { foreignKey: "ID" });
wpPostsData = await wp_posts .findAll({
include: [wp_postmeta ]
});
生成以下內容(我可以在終端中看到):
Executing (default): SELECT `wp_posts`.`ID`, `wp_posts`.`post_author`, `wp_posts`.`post_title`, `wp_postmeta`.`post_id` AS `wp_postmeta.post_id`, `wp_postmeta`.`meta_key` AS `wp_postmeta.meta_key`, `wp_postmeta`.`meta_value` AS `wp_postmeta.meta_value`, `wp_postmeta`.`ID` AS `wp_postmeta.ID` FROM `wp_posts` AS `wp_posts` LEFT OUTER JOIN `wp_postmeta` AS `wp_postmeta` ON `wp_posts`.`ID` = `wp_postmeta`.`post_id` WHERE `wp_posts`.`post_type` = 'product';
以這個錯誤結束:
parent: Error: Unknown column 'wp_postmeta.ID' in 'fie… at Packet.asError (c:\Users\yonatan\OneD…, original: Error: Unknown column 'wp_postmeta.ID' in 'fi… at Packet.asError (c:\Users\yonatan\OneD…, sql: 'SELECT `wp_posts`.`ID`, `wp_posts`.`post_autho…_id` WHERE `wp_posts`.`post_type` = 'product';', parameters: {…}, …}
為什么wp_postmeta.ID
在 select 語句中使用 wp_postmeta.ID? 它在使用wp_postmeta.post_id
的join
部分中正確處理。 那么為什么要在它后面混合表格字段呢?
您需要在兩個配對關聯 (hasMany/belongsTo) 中指示相同的外鍵列,因為實際上您只有一個外鍵列(在wp_postmeta
中)而wp_posts
中的另一列是 PK(默認情況下)。
wp_posts.hasMany(wp_postmeta , { foreignKey: "post_id" });
wp_postmeta.belongsTo(wp_posts , { foreignKey: "post_id" });
不需要在關聯中指示 1:N 關系的 1 個邊表中的列,因為通常它是 PK 列。 如果您想使用其他列而不是具有唯一約束/索引的 PK,那么您還需要在sourceKey
選項的兩個關聯中指明它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.