sequelize 如何建立多表关联并查询?

问题描述:
有如下三个表
图片描述

表关系描述:
1.category表存放有目录id以及名字。
2.category_product表存放有category_id对应category表的id,product_id对应相应的product表,里面有产品的详细信息。


目前建模关系:
category模型中

category.hasMany(category_product,{foreignKey:'id',targetKey:'category_id'})

category_product模型中

category_product.belongsTo(Product, {foreignKey: 'product_id',targetKey: 'id'})

报错问题:

SequelizeDatabaseError: Unknown column 'category_product.id' in 'field list'
阅读 11.5k
2 个回答
//category_product和category关系
category.hasMany(category_product,{foreignKey:'category_id'})
category_product.belongsTo(category,{foreignKey:'category_id'})

//category_product和Product关系
Product.hasMany(category_product,{foreignKey:'product_id'})
category_product.belongsTo(Product, {foreignKey: 'product_id'})

此外hasMany已经废除targetKey了,如果你要用非id做关联键用sourceKey,但从你数据结构来看并不需要。

1.看下你的model定义字段和类型是否正确。
2.仔细看下这几个方法,调用是否正确再调试看结果。

hasOne - 添加外键到目标模型,并以单数关系混入到源模型
belongsTo - 为当前模型添加外键,并以单数关系混入到源模型
hasMany - 添加外键到目标模型,并以复数关系混入到源模型
belongsToMany - 为连接的表创建N:M关系并以复数关系混入到源模型。会通过sourceId和targetId创建交叉表。

中文文档如下: https://itbilu.com/nodejs/npm...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题