Доктрина sqlfilter, как получить доступ к псевдониму отношения oneToMany - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть sqlFilter, и я хотел бы отфильтровать отношения OneToMany

Мой репозиторий

$qb = $this->createQueryBuilder('employe');
$qb->leftJoin('employe.contrats', 'contrats', 'WITH');

И мой фильтр

class DepartementFilter extends SQLFilter
{  
public function addFilterConstraint(ClassMetadata $targetEntity, $targetTableAlias)
    {
employeursArray=[1,2,3];

      if ($targetEntity->getReflectionClass()->name === 'App\Entity\Employe') {
 $sqlLocal = sprintf(
            'c1_.employeur_id IN (%s))',
            $employeursArray
        );     
    }
}

Фильтр работает, но яимеют скрытый псевдоним "c1_"

Я не нашел, как получить это имя псевдонима, потому что это изменение на других страницах

$ targetTableAlias ​​- это псевдоним Employe "e1 _"

Спасибо

1 Ответ

0 голосов
/ 06 февраля 2019

addFilterConstraint получить псевдоним в качестве второго параметра.Заменить на

$sqlLocal = sprintf(
            '%s.employeur_id IN (%s))',
            $targetTableAlias,
            $employeursArray
        );  

Вы можете проверить пример в https://www.doctrine -project.org / projects / doctrine-orm / en / 2.6 / reference / filters.html # example-filter-class

...