Newer
Older
<?php
declare(strict_types=1);
namespace IQDEV\Packages\DoctrineHttpFilter;
use Doctrine\ORM\EntityRepository;
use Doctrine\ORM\QueryBuilder;
use Symfony\Component\HttpFoundation\Request;
abstract class HttpFilterEntityRepository extends EntityRepository implements QueryFilterInterface
{
/** @inheritDoc */
public function createQueryByFilter(iterable $filters, ?Request $request = null): QueryBuilder
{
$queryBuilder = $this->createQueryBuilder($tableAlias);
/**
* @var string $field
* @var string|HttpFilter $filter
*/
foreach ($filters as $field => $filter) {
if (! $filter instanceof HttpFilter && is_string($filter)) {
$filter = new $filter($tableAlias, $field, $request);
}
$filter->addToQuery($queryBuilder);
}
return $queryBuilder;
}
abstract public function getAliasTableForFilter(): string;