Skip to content

Commit

Permalink
Merge pull request #1 from maximecolin/patch-3
Browse files Browse the repository at this point in the history
Fix multiple join
  • Loading branch information
Krzysztof Trzos committed Jan 12, 2018
2 parents 984018f + e73afa4 commit b60b986
Showing 1 changed file with 8 additions and 2 deletions.
10 changes: 8 additions & 2 deletions src/Search/QueryBuilder.php
Original file line number Diff line number Diff line change
Expand Up @@ -88,10 +88,12 @@ public function createSearchQueryBuilder(array $entityConfig, $searchQuery, $sor
->from($entityConfig['class'], 'entity')
;

$joined = array();
$isSortedByDoctrineAssociation = false !== strpos($sortField, '.');
if ($isSortedByDoctrineAssociation) {
$sortFieldParts = explode('.', $sortField);
$queryBuilder->leftJoin('entity.'.$sortFieldParts[0], $sortFieldParts[0]);
$joined[] = $sortFieldParts[0];
}

$isSearchQueryNumeric = is_numeric($searchQuery);
Expand All @@ -106,9 +108,13 @@ public function createSearchQueryBuilder(array $entityConfig, $searchQuery, $sor

if(strpos($name, '.') !== false) {
[$fieldPrefix, $name] = explode('.', $name);
$queryBuilder->join('entity.'.$fieldPrefix, $fieldPrefix);

if (!in_array($fieldPrefix, $joined)) {
$queryBuilder->join('entity.'.$fieldPrefix, $fieldPrefix);
$joined[] = $fieldPrefix;
}
}

$isSmallIntegerField = 'smallint' === $metadata['dataType'];
$isIntegerField = 'integer' === $metadata['dataType'];
$isNumericField = in_array($metadata['dataType'], array('number', 'bigint', 'decimal', 'float'));
Expand Down

0 comments on commit b60b986

Please sign in to comment.