Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 6e105fd070 | |||
| a0c4597de0 |
+1
-1
@@ -1,2 +1,2 @@
|
|||||||
parameters:
|
parameters:
|
||||||
app.version: '1.9.36'
|
app.version: '1.9.37'
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ namespace App\Filter;
|
|||||||
use ApiPlatform\Doctrine\Orm\Filter\AbstractFilter;
|
use ApiPlatform\Doctrine\Orm\Filter\AbstractFilter;
|
||||||
use ApiPlatform\Doctrine\Orm\Util\QueryNameGeneratorInterface;
|
use ApiPlatform\Doctrine\Orm\Util\QueryNameGeneratorInterface;
|
||||||
use ApiPlatform\Metadata\Operation;
|
use ApiPlatform\Metadata\Operation;
|
||||||
|
use App\Entity\ConstructeurTelephone;
|
||||||
use Doctrine\ORM\QueryBuilder;
|
use Doctrine\ORM\QueryBuilder;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -38,22 +39,27 @@ final class ConstructeurSearchFilter extends AbstractFilter
|
|||||||
}
|
}
|
||||||
|
|
||||||
$alias = $queryBuilder->getRootAliases()[0];
|
$alias = $queryBuilder->getRootAliases()[0];
|
||||||
$telAlias = $queryNameGenerator->generateJoinAlias('telephones');
|
$telAlias = $queryNameGenerator->generateJoinAlias('phoneSearch');
|
||||||
$paramName = $queryNameGenerator->generateParameterName('search');
|
$paramName = $queryNameGenerator->generateParameterName('search');
|
||||||
$likePattern = '%'.mb_strtolower(trim($value)).'%';
|
$likePattern = '%'.mb_strtolower(trim($value)).'%';
|
||||||
|
|
||||||
|
$em = $queryBuilder->getEntityManager();
|
||||||
|
$phoneSubQuery = $em->createQueryBuilder()
|
||||||
|
->select('1')
|
||||||
|
->from(ConstructeurTelephone::class, $telAlias)
|
||||||
|
->where(sprintf('%1$s.constructeur = %2$s', $telAlias, $alias))
|
||||||
|
->andWhere(sprintf('LOWER(%s.numero) LIKE :%s', $telAlias, $paramName))
|
||||||
|
->getDQL()
|
||||||
|
;
|
||||||
|
|
||||||
$queryBuilder
|
$queryBuilder
|
||||||
->leftJoin(sprintf('%s.telephones', $alias), $telAlias)
|
|
||||||
->andWhere(sprintf(
|
->andWhere(sprintf(
|
||||||
'LOWER(%1$s.name) LIKE :%4$s OR LOWER(%1$s.email) LIKE :%4$s OR LOWER(%2$s.numero) LIKE :%4$s',
|
'LOWER(%1$s.name) LIKE :%2$s OR LOWER(%1$s.email) LIKE :%2$s OR EXISTS (%3$s)',
|
||||||
$alias,
|
$alias,
|
||||||
$telAlias,
|
|
||||||
'',
|
|
||||||
$paramName,
|
$paramName,
|
||||||
|
$phoneSubQuery,
|
||||||
))
|
))
|
||||||
->setParameter($paramName, $likePattern)
|
->setParameter($paramName, $likePattern)
|
||||||
;
|
;
|
||||||
|
|
||||||
$queryBuilder->groupBy(sprintf('%s.id', $alias));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user