sequalize js中的自引用外键

gojuced7  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(248)

我有个模范员工 (id,first_name,last_name,manager_id) 在这里 manager_id 是指 id 同一表的列。如何在sequelize中实现这样一个用例。
我试过了,但没用

employee.belongsTo(models.employee, {
        foreignKey: 'manager_id'
      }),
rryofs0p

rryofs0p1#

您可以定义如下关联:

employee.belongsTo(employee, {as: "Manager"});
employee.hasMany(employee, { as: "Employee", foreignKey: "manager_id", useJunctionTable: false });

然后像这样使用它

employee.findAll({
    include : {
        model : employee ,
        as : 'Manager'
    }
})


可以使用sequelize层次结构

var employee = sequelize.define('employee', {
    name: Sequelize.STRING,
    manager_id: {
        type: Sequelize.INTEGER,
        hierarchy: true
    }
});

employee.findAll({ hierarchy: true }).then(function(results) {
    // results = [
    //  { id: 1, manager_id: null, name: 'a', children: [
    //      { id: 2, manager_id: 1, name: 'ab', children: [
    //          { id: 3, manager_id: 2, name: 'abc' }
    //      ] }
    //  ] }
    // ]
});

相关问题