Commit 62c59b14 authored by Адлан Шамавов's avatar Адлан Шамавов
Browse files

fix: Изменение логики

parent 0e7012ec
Loading
Loading
Loading
Loading
+0 −15
Original line number Diff line number Diff line
<?php

declare(strict_types=1);

namespace IQDEV\Packages\DoctrineHttpFilter;

use Doctrine\ORM\QueryBuilder;
use Symfony\Component\HttpFoundation\Request;

interface HttpFilterEntityRepositoryInterface
{
    public function createQueryByFilter(iterable $filters, ?Request $request = null): QueryBuilder;

    public function getAliasTableForFilter(): string;
}
+32 −0
Original line number Diff line number Diff line
<?php

declare(strict_types=1);

namespace IQDEV\Packages\DoctrineHttpFilter;

use Doctrine\ORM\Mapping\ClassMetadata;
use Doctrine\ORM\QueryBuilder;
use Symfony\Component\HttpFoundation\Request;

/**
 * @method getEntityManager()
 * @method getClassName()
 */
trait HttpFilterTrait
{
    public HttpFilterEntityRepository $repository;

    final public function createQueryByFilter(iterable $filters, ?Request $request = null): QueryBuilder
    {
        if (! isset($this->repository)) {
            $this->repository = new HttpFilterEntityRepository(
                $this->getEntityManager(),
                new ClassMetadata($this->getClassName())
            );
        }

        return $this->repository->createQueryByFilter($filters, $this->getAliasTableForFilter(), $request);
    }

    abstract public function getAliasTableForFilter(): string;
}
+1 −1
Original line number Diff line number Diff line
@@ -10,5 +10,5 @@ use Symfony\Component\HttpFoundation\Request;
interface QueryFilterInterface
{
    /** @param iterable<string, HttpFilter> $filters */
    public function createQueryByFilter(iterable $filters, ?Request $request = null): QueryBuilder;
    public function createQueryByFilter(iterable $filters, string $tableAlias, ?Request $request = null): QueryBuilder;
}