左边加入sequelize中的同一张桌子

问题描述 投票:0回答:1

我想在sequelize中写下面的查询但是不能理解怎么做。

SELECT * FROM RegisterUser AS RegisterUser LEFT OUTER JOIN Notification as Noti ON PM_UserID = Noti.ReceiveID LEFT OUTER JOIN RegisterUser AS RegisterUser1 ON Noti.SenderId = RegisterUser1.PM_UserID WHERE RegisterUser.PM_UserID = ReceiveID

我已将下面的查询写为单个左连接,它工作正常。

  RegisterUser.findAll({
include: [
  {
    model: Notification,
    as: 'NotificationrecipientId',
    required: false,
  },
],
raw: true });

而我的主张如下:

db.RegisterUser.hasMany(db.Notifications, { as: 'NotificationrecipientId', foreignKey: 'ReceiveID' });

发件人ID也在注册用户表中。

node.js sequelize.js
1个回答
1
投票

为此,您已经定义了一个关联:

db.Notification.belongsTo(db.RegisterUser, { as: 'Sender', foreignKey: 'SenderId' });

然后使用它像:

RegisterUser.findAll({
    include: [{
        model: Notification,
        as: 'NotificationrecipientId',
        required: false,
        include: [{
            model: RegisterUser,
            as: 'Sender', // <---- HERE
            required: false,
        }, ]
    }, ],
    raw: true
});
© www.soinside.com 2019 - 2024. All rights reserved.