Skip to content

Commit

Permalink
Fix multiple join
Browse files Browse the repository at this point in the history
  • Loading branch information
maximecolin committed Jan 5, 2018
1 parent 984018f commit e73afa4
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 e73afa4

Please sign in to comment.