private function applyQueryFilter(QueryBuilder $query, Filter $filter) { $query->where('u.enabled = 1'); if ($filter->isEmpty()) { return; } if ($nt = $filter->getNotificationType()) { // JOIN NotificationSubscriptions ns ON (u.id = ns.idUser AND ns.idNotificationType = x) $query->innerJoin('u', 'NotificationSubscriptions', 'ns', 'u.id = ns.idUser AND ns.idNotificationType = :ntype'); $query->setParameter('ntype', $nt->getId()); } if ($status = $filter->getUserStatus()) { $query->andWhere('u.status = :status'); $query->setParameter('status', $status); } $sslist = $filter->getScholarships(); if (!empty($sslist)) { $ssids = []; foreach ($sslist as $scholarship) { $ssids[] = $scholarship->getId(); } $ssids = implode(',', $ssids); $query->innerJoin('u', 'Entries', 'e', 'u.id = e.idUser AND e.idScholarship IN(' . $ssids . ')'); } if (class_exists('GotChosen\\SiteBundle\\Entity\\EGGame') && $filter->hasSubmittedGame()) { $query->innerJoin('u', 'Games', 'g', 'u.id = g.user_id'); } if ($lang = $filter->getLanguage()) { $query->innerJoin('u', 'UserProfile', 'up', 'u.id = up.user_id AND up.property_id = 19 AND up.propertyValue = :lang'); $query->setParameter('lang', $lang); } }