Sequelize.s包含祖先列

时间:2017-12-06 20:09:53

标签: join associations sequelize.js where

抱歉我的英语不好,但我不知道如何更好地制定标题。 无论如何,我有以下3个模型

 const ModelAlpha = sequelize.define('tbl_A', {
    id: {
        type: Sequelize.INTEGER.UNSIGNED,
        field: 'a_id',
        autoIncrement: true,
        primaryKey: true,
    }
});


const ModelBeta = sequelize.define('tbl_B', {
    id: {
        type: Sequelize.INTEGER.UNSIGNED,
        field: 'b_id',
        autoIncrement: true,
        primaryKey: true,
    },
    attributeB: {
        type: Sequelize.TINYINT.UNSIGNED,
        field: 'b_attribute'
    }
});


const ModelCharlie = sequelize.define('tbl_C', {
    id: {
        type: Sequelize.INTEGER.UNSIGNED,
        field: 'c_id',
        autoIncrement: true,
        primaryKey: true,
    },
    attributeC: {
        type: Sequelize.TINYINT.UNSIGNED,
        field: 'c_attribute'
    }
});

一个ModelAlpha有一个ModelBeta。 ModelAlpha有一个引用ModelBeta主键的外键列。 ModelAlpha可以有很多ModelCharlie 我要努力实现以下目标

SELECT C.* FROM tbl_C
JOIN tbl_A ON tbl_A.a_id = C.fkey_a_id
JOIN tbl_B ON tbl_B.b_id = tbl_A.fkey_b_id
WHERE C.c_attribute = B.b_attribute
AND tbl_A.a_id = 123

所以,换句话说,所有Alpha的Charlies都是123 并且其c_attribute等于Beta

的b_attribute

到目前为止,我写了类似下面的内容, 但我被困在我应该添加到哪里 子句。

   ModelAlpha.belongsTo(ModelBeta, {foreignKey: 'fkey_b_id', as: 'beta'});
   ModelAlpha.hasMany(ModelCharlie,{foreignKey: 'fkey_a_id', as : 'charlies'});

    ModelAlpha.find({
    where: {id: '123'},
    include: [
        {
            model: ModelBeta,
            as: 'beta',
            attributes: [],
        },
        {
            model: ModelCharlie,
            as: 'charlies',
            attributes:[],
            where: {
                attributeC: ......
            }
        }
    ],
    limit: 1
}).then(result => {
     //...

});

之前有没有人想出这种情况? 谢谢。

0 个答案:

没有答案