/** * Adds all required joins to the queryBuilder. * * @param QueryBuilder $queryBuilder * @param $filter */ private function addJoins(QueryBuilder $queryBuilder, AssociationPropertyInterface $filter) { if (in_array($filter->getAssociation(), $this->joins)) { // Association already added, return return; } $associations = explode('.', $filter->getAssociation()); $fullAssociation = 'o'; foreach ($associations as $key => $association) { if (isset($associations[$key - 1])) { $parent = $associations[$key - 1]; } else { $parent = 'o'; } $fullAssociation .= '.' . $association; $alias = $this->getAlias($fullAssociation); $queryBuilder->join($parent . '.' . $association, $alias); } $this->joins[] = $filter->getAssociation(); }