Fixed: [export][activity type filter for acp] fix filter for acp, by activity type

Use an `EXISTS` subquery instead of a JOIN.
This commit is contained in:
Julien Fastré 2023-01-11 16:34:10 +01:00
parent e7ac8aafe1
commit 5fea61c450
Signed by: julienfastre
GPG Key ID: BDE2190974723FCB

View File

@ -44,14 +44,13 @@ class ActivityTypeFilter implements FilterInterface
public function alterQuery(QueryBuilder $qb, $data)
{
if (!in_array('activity', $qb->getAllAliases(), true)) {
$qb->join(Activity::class, 'activity', Expr\Join::WITH, 'activity.accompanyingPeriod = acp');
}
$clause = $qb->expr()->in('activity.activityType', ':selected_activity_types');
$qb->andWhere($clause);
$qb->setParameter('selected_activity_types', $data['types']);
$qb->andWhere(
$qb->expr()->exists(
'SELECT 1 FROM '.Activity::class.' act_type_filter_activity
WHERE act_type_filter_activity.activityType IN (:act_type_filter_activity_types) AND act_type_filter_activity.accompanyingPeriod = acp'
)
);
$qb->setParameter('act_type_filter_activity_types', $data['accepted_activitytypes']);
}
public function applyOn()