Merge branch 'develop'
This commit is contained in:
commit
d3e0ba7ca5
2 changed files with 24 additions and 1 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue