FormBuilder 中的 QueryBuilder 表达式

QueryBuilder expression in FormBuilder

我想知道如何在 formBuilder.

中使用 queryBuilder 表达式

formBuilder 中查询生成器的一般用法是:

$builder->add('client', EntityType::class, array(
    'class'=>Entity::class,
    'query_builder'=>function(EntityRepository $er) {
        return $er->createQueryBuilder("e")
                  ->where("e.active=1");
    },
));

现在,我想在 where 语句中使用 ->expr()->in()
问题是,与实体存储库不同,$er->expr 不起作用。

我应该怎么做才能在 where 语句中访问 expr

function (EntityRepository $repo) {
    $qb = $repo->createQueryBuilder('e');

    $qb
        ->andWhere($qb->expr()->in(...))
    ;

    return $qb;
}

您可以访问EntityManager访问表达式生成器,然后获取表达式生成器,例如:

$builder->add('client', EntityType::class, array(
    'class'=>Entity::class,
    'query_builder'=>function(EntityRepository $er) {
        $expr = $er->getEntityManager()->getExpressionBuilder();
        // .. 
    },
));

希望对您有所帮助