Выражение QueryBuilder в FormBuilder - PullRequest
       36

Выражение QueryBuilder в FormBuilder

0 голосов
/ 01 октября 2018

Я хотел бы знать, как использовать выражение queryBuilder в formBuilder .

Общее использование построителя запросов в formBuilder:

$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 не работает.

Что я должен сделать, чтобы получить доступ к expr вwhere заявление?

Ответы [ 2 ]

0 голосов
/ 01 октября 2018

Вы можете получить доступ к построителю выражений, открыв доступ к EntityManager, а затем получить построитель выражений, например:

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

Надеюсь, что эта справка

0 голосов
/ 01 октября 2018
function (EntityRepository $repo) {
    $qb = $repo->createQueryBuilder('e');

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

    return $qb;
}
...