filter sequelize belongstomany get< association>关联表

zvokhttg  于 2021-06-20  发布在  Mysql
关注(0)|答案(3)|浏览(387)

我正在使用Sequelize4.37.10,它工作得很好。不幸的是,在我看来,文档并不完美。所以它缺乏一点对潜在可能性的描述。
我有以下问题:
我这样定义我的表:

  1. const Department = db.define('department', {
  2. name: {type: Sequelize.STRING, allowNull: false},
  3. shortName: {type: Sequelize.STRING, allowNull: false}
  4. })
  5. const Employee = db.define('employee', {
  6. title: {type: Sequelize.STRING},
  7. name: {type: Sequelize.STRING, allowNull: false},
  8. surname: {type: Sequelize.STRING, allowNull: false},
  9. .
  10. .
  11. role: {type: Sequelize.STRING}
  12. })

然后我将这些表关联如下:

  1. const EmployeeDepartments = db.define('employeeDepartments', {
  2. manager: {type: Sequelize.BOOLEAN, allowNull: false}
  3. })
  4. Department.belongsToMany(Employee, {through: EmployeeDepartments})
  5. Employee.belongsToMany(Department, {through: EmployeeDepartments})

现在,我想让所有部门员工都将manager字段设置为true。创建没有问题,但是选择对我来说是个问题。
我尝试了以下方法但没有成功:

  1. department.getEmployees({where: {manager: true}})

我也想过范围,但我不知道如何设计适当。
你能帮我吗?

wgx48brx

wgx48brx1#

我自己找了一会儿才找到一个非常简单的答案。
使用时 belongsToMany sequelize确实使用联接从第二个表中获取数据(我知道这一点)。
我可以选择使用以下语法:

  1. department.getEmployees({where: {'$employeeDepartments.manager$': true}})

我在google上的一个页面上发现了这个,但不幸的是我丢失了url。也许这对有类似问题的人有帮助。

mgdq6dx1

mgdq6dx12#

有趣的是,我只是在寻找完全相同的东西,唯一的结果是你几个小时前的问题。。。
我现在已经解决了,你需要的是:

  1. department.getEmployees({ through: { where: { manager: true } } })

你也可以让公司的所有员工 department 其中你只有 id :

  1. const department = Department.build( { id: departmentId } );
  2. // proceed as above
sgtfey8w

sgtfey8w3#

  1. department.getEmployees({where: {manager: true}})

用这个修改这个代码。

  1. department.getEmployees(
  2. include:{
  3. model: employeedepartments, // your employee departments model name
  4. {where: {manager: true},
  5. required:true,
  6. }
  7. })

您只需在查询中添加include

相关问题