У меня есть две таблицы поставщиков и счетов. Провайдер может иметь другого Провайдера в качестве своего менеджера. Они определяются следующим отношением
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']
]
});
Однако, что происходит, если у менеджера нет счетов-фактур за этот период начисления заработной платы, он просто пропустит всю строку, даже если у его супервизируемых есть счета-фактурынастоящее.
Так что в идеале я ожидаю, что если у менеджера нет счетов, то я должен получить счета в виде [] пустого массива и массива супервизируемых как есть. Но почему-то мне ничего не будет показано, если счета менеджера отсутствуют.
Есть ли лучший способ переформатировать этот запрос?