FormBuilder中的QueryBuilder表达式

时间:2018-09-30 21:08:53

标签: symfony doctrine-orm symfony-3.4

我想知道如何在 formBuilder 中使用queryBuilder表达式。

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

parallel -j 8 ...

现在,我想在parallel --dry-run ... 语句中使用$builder->add('client', EntityType::class, array( 'class'=>Entity::class, 'query_builder'=>function(EntityRepository $er) { return $er->createQueryBuilder("e") ->where("e.active=1"); }, ));
问题是,与实体存储库不同,->expr()->in()不起作用。

我该怎么做才能在where语句中访问$er->expr

2 个答案:

答案 0 :(得分:2)

您可以访问访问EntityManager的表达式构建器,然后获取表达式构建器,例如:

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

希望获得帮助

答案 1 :(得分:1)

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

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

    return $qb;
}