Merge branch 'develop'

This commit is contained in:
Simon Vieille 2025-12-22 19:23:47 +01:00
commit d3e0ba7ca5
Signed by: deblan
GPG key ID: 579388D585F70417
2 changed files with 24 additions and 1 deletions

View file

@ -1,5 +1,9 @@
## [Unreleased]
### Added
* feat(repository): add RepositoryQuery::addCaseInsensitiveFilters()
* feat(repository): add RepositoryQuery::addForcedFilterHandler()
## [v1.27.0] - 2025-12-22
### Fixed
* fix(crud): use route params to redirect after a delation

View file

@ -18,6 +18,7 @@ abstract class RepositoryQuery
protected PaginatorInterface $paginator;
protected string $id;
protected array $forcedFilterHandlers = [];
protected array $caseInsensitiveFilters = [];
public function __construct(ServiceEntityRepository $repository, string $id, PaginatorInterface $paginator = null)
{
@ -88,7 +89,11 @@ abstract class RepositoryQuery
$this->andWhere('.'.$name.' = :'.$name);
$this->setParameter(':'.$name, $value);
} elseif (is_string($value)) {
$this->andWhere('.'.$name.' LIKE :'.$name);
if (in_array($name, $this->caseInsensitiveFilters)) {
$this->andWhere(sprintf('LOWER (.%1$s) LIKE LOWER(:%1$d)', $name));
} else {
$this->andWhere('.'.$name.' LIKE :'.$name);
}
$this->setParameter(':'.$name, '%'.$value.'%');
} else {
$this->filterHandler($name, $value);
@ -142,4 +147,18 @@ abstract class RepositoryQuery
protected function filterHandler(string $name, $value)
{
}
protected function addCaseInsensitiveFilters(string $name): self
{
$this->caseInsensitiveFilters[] = $name;
return $this;
}
protected function addForcedFilterHandlers(string $name): self
{
$this->forcedFilterHandlers[] = $name;
return $this;
}
}