教义sqlfilter如何访问oneToMany关系的别名

时间:2019-02-05 12:25:49

标签: symfony doctrine

我有一个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 :(得分:0)

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

中查看示例