add forcedFilterHandlers attribute in RepositoryQuery to force filterHandle to be called in specific use case

This commit is contained in:
Simon Vieille 2021-10-06 14:41:44 +02:00
parent c37398f33f
commit 79bdb31f3d

View file

@ -17,6 +17,7 @@ abstract class RepositoryQuery
protected QueryBuilder $query; protected QueryBuilder $query;
protected PaginatorInterface $paginator; protected PaginatorInterface $paginator;
protected string $id; protected string $id;
protected array $forcedFilterHandlers;
public function __construct(ServiceEntityRepository $repository, string $id, PaginatorInterface $paginator = null) public function __construct(ServiceEntityRepository $repository, string $id, PaginatorInterface $paginator = null)
{ {
@ -24,6 +25,7 @@ abstract class RepositoryQuery
$this->query = $repository->createQueryBuilder($id); $this->query = $repository->createQueryBuilder($id);
$this->paginator = $paginator; $this->paginator = $paginator;
$this->id = $id; $this->id = $id;
$this->forcedFilterHandlers = [];
} }
public function __call(string $name, $params): self public function __call(string $name, $params): self
@ -81,7 +83,9 @@ abstract class RepositoryQuery
continue; continue;
} }
if (is_int($value) || is_bool($value)) { if (in_array($name, $this->forcedFilterHandlers)) {
$this->filterHandler($name, $value);
} elseif (is_int($value) || is_bool($value)) {
$this->andWhere('.'.$name.' = :'.$name); $this->andWhere('.'.$name.' = :'.$name);
$this->setParameter(':'.$name, $value); $this->setParameter(':'.$name, $value);
} elseif (is_string($value)) { } elseif (is_string($value)) {