Узел Sequelize множественная ассоциация, где предложение не показывает данные - PullRequest
0 голосов
/ 03 ноября 2019

У меня есть две таблицы поставщиков и счетов. Провайдер может иметь другого Провайдера в качестве своего менеджера. Они определяются следующим отношением

Provider.belongsTo(Provider, {
    as: 'assignedRegionalConsultant',
    foreignKey: 'assigned_regional_consultant_uuid'
});

Provider.hasMany(Provider, {
    as: 'supervisees',
    foreignKey: 'assigned_regional_consultant_uuid'
});

Поставщик связан со счетом:

Invoice.belongsTo(Provider, {
    as: 'submitter_provider',
    foreignKey: 'submitter_uuid'
});

Provider.hasMany(Invoice, {
    as: 'invoices',
    foreignKey: 'submitter_uuid'
});

Я хочу показать страницу с менеджером> под его счетами, а затем под егосчета-фактуры супервизируемых.

Это мой запрос

var weeklyEarnings = await Provider.findAll({
    where: weeklyEarningsCondition,
    include: [
        {
            model: Provider, //his supervisees invoices
            as: 'supervisees',
            attributes:[
                'first_name', 
                'last_name'
            ],
            include: [
                {
                    model: Invoice,
                    as: 'invoices',
                    where: {
                        submission_date: {
                            [Op.between]: [payrollStart, payrollEnd]
                        }
                    }
                }
            ]
        },
        {
            model: Invoice, //his own invoices
            as: 'invoices',
            where: {
                submission_date: {
                    [Op.between]: [payrollStart, payrollEnd]
                }
            }
        }
    ],
    attributes: [
        'first_name', 
        'last_name',
        'consulting_percentage'
    ],
    order: [
        ['first_name', 'ASC']
    ]
});

Однако, что происходит, если у менеджера нет счетов-фактур за этот период начисления заработной платы, он просто пропустит всю строку, даже если у его супервизируемых есть счета-фактурынастоящее.

Так что в идеале я ожидаю, что если у менеджера нет счетов, то я должен получить счета в виде [] пустого массива и массива супервизируемых как есть. Но почему-то мне ничего не будет показано, если счета менеджера отсутствуют.

Есть ли лучший способ переформатировать этот запрос?

...