exports: add condition with distinct alias on join clauses (wip)

This commit is contained in:
2022-09-07 19:35:07 +02:00
parent 3851e65777
commit 81359877c4
21 changed files with 129 additions and 59 deletions

View File

@@ -46,22 +46,27 @@ final class HouseholdPositionAggregator implements AggregatorInterface, ExportEl
public function alterQuery(QueryBuilder $qb, $data)
{
$qb->resetDQLPart('from');
$qb->from(HouseholdMember::class, 'hm');
$qb->from(HouseholdMember::class, 'member');
$qb->join('hm.person', 'person');
$qb->join('person.center', 'center');
if (!in_array('person', $qb->getAllAliases(), true)) {
$qb->join('member.person', 'person');
}
if (!in_array('center', $qb->getAllAliases(), true)) {
$qb->join('person.center', 'center');
}
$qb->andWhere($qb->expr()->andX(
$qb->expr()->lte('hm.startDate', ':date'),
$qb->expr()->lte('member.startDate', ':date'),
$qb->expr()->orX(
$qb->expr()->isNull('hm.endDate'),
$qb->expr()->gte('hm.endDate', ':date')
$qb->expr()->isNull('member.endDate'),
$qb->expr()->gte('member.endDate', ':date')
)
));
$qb->setParameter('date', $data['date_position']);
$qb->addSelect('IDENTITY(hm.position) AS household_position_aggregator');
$qb->addSelect('IDENTITY(member.position) AS household_position_aggregator');
$groupBy = $qb->getDQLPart('groupBy');