关于sequelize当中关联模型

在sequelize当中我们可以以下方式定义关联关系

在这里插入图片描述
在这里插入图片描述

案例1

现在有一张员工表和一个部门表
员工表当中有一个department_id 与部门表当中的id对应

想要查询所有员工信息,以及每个员工对应的部门信息

分析:
1、这是什么关系?一对一、一对多还是多对多?
可想而知员工表当中每一条员工信息里边的department_id 只会指向部门表当中一条数据,所以应该是一对一关系。

所以可以选择hasOne或者belongsTo

2、谁是主表谁是从表?
通过外键在员工表当中,可以判得员工表是从表。而部门表是主表
所以在employees模型当中定义与部门模型关系时候可以使用
belongsTo

 employees.belongsTo(models.departments, {
     foreignKey: 'department_id',
     primaryKey: 'id'
 })

案例2

如果现在反过来,在部门模型当中定义与员工关联模型
分析:
1、这是什么关系?一对一、一对多还是多对多?
一个部门对应多个员工

所以可以选择hasMany或者belongsTo

2、谁是主表谁是从表?
通过外键在员工表当中,可以判得员工表是从表。而部门表是主表
所以在departments模型当中定义与部门模型关系时候可以使用
hasMany

 departments.hasMany(models.employees, {
    foreignKey: 'department_id',
    primaryKey: 'id'
})

然后里边的foreightKey 不管谁是用belongsTo还是hasOne还是hasMany 都是写的从表里边的外键,promaryKey是主表的id 与 外键对应的那个id

对于其他的关系都可以通过以上步骤去推断

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值