使用多个 WHERE 子句在多个表中对 ORM 嵌套 INNER JOIN 进行 Sequelize

问题描述

我的目的是检索包含用户 ID、订单 ID 和交易 ID 的列表,其中给定条件,例如用户的电子邮件必须是“mark@fb.com”,订单的备注必须是“PO”,并且交易的付款方式必须成为“贝宝”

My scenario I have 3 tables which called User,User_Order,Order_Transaction.
User [PK:uid] --> User_Order [FK:owner]
User_Order [PK:oid] --> Order_Transaction [FK:orderId]
Association for these 3 models
User.hasMany(UserOrder)
UserOrder.belongTo(User)
UserOrder.belongTo(OrderTransaction)
OrderTransaction.hasMany(UserOrder)

My expected outcome query with Sequelize ORM should be below

SELECT U.id,UO.oid,OT.tid
FROM User AS U INNER JOIN User_Order AS UO ON
U.uid = UO.owner INNER JOIN Order_Transaction AS OT ON
UO.oid = OT.orderid
WHERE U.email = 'mark@fb.com' AND UO.remarks = 'PO' AND OT.paymentMethod ='PayPal';

我的尝试但以下解决方案不允许我在 where 子句中添加备注和付款方式..

User.findOne({where:{email:'mark@fb.com'},include: [{
        model: UserOrder,on:{
            'owner': { [Op.eq]: db.sequelize.col('User.uid')}
        },required:true,include: [{
            model: OrderTransaction,on:{
                'orderid': { [Op.eq]: db.sequelize.col('UserOrder.oid')}
            },required:true
        }]
    }]
}).then(resp=>{
    return res.status(200).send({user:resp});
}).catch(err=>{
     return res.status(500).send({user_error:err.message});
});

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)