suivi/src/Repository/EstablishmentRepositoryQuery.php

40 lines
978 B
PHP

<?php
namespace App\Repository;
use App\Core\Repository\RepositoryQuery;
use App\Entity\Project;
use App\Repository\EstablishmentRepository as Repository;
use Knp\Component\Pager\PaginatorInterface;
class EstablishmentRepositoryQuery extends RepositoryQuery
{
public function __construct(Repository $repository, PaginatorInterface $paginator)
{
parent::__construct($repository, 'e', $paginator);
}
public function withProject(?Project $project): self
{
if (!$project) {
return $this;
}
$keyProject = 'k'.mt_rand();
$keyId = 'id'.mt_rand();
return $this
->innerJoin('.projects', $keyProject)
->andWhere($keyProject.'.id = :'.$keyId)
->setParameter($keyId, $project->getId())
;
}
protected function filterHandler(string $name, $value)
{
if ('project' === $name) {
return $this->withProject($value);
}
}
}