Вы можете добавить условие внутри функции 'query_builder', чтобы она не выполнялась, если условие options[′groupCategory′]==3несоблюдается.Например:</p><pre><codeclass="language−php">options['groupCategory'] == 3 не соблюдается. Например:</p><pre><code class="language-php">options[′groupCategory′]==3несоблюдается.Например:</p><pre><codeclass="language−php">builder ->add( 'maker', 'entity', array( 'class' => 'CrbrBundle:CrbrItemMaker', 'property' => 'name', 'required' => false, 'data' => $options['maker'], 'empty_value' => '-- Все --', 'query_builder' => function (EntityRepository $er) use ($options) { if ($options['groupCategory'] != 3) { return $er->createQueryBuilder('x') ->innerJoin('x.item', 'i') ->innerJoin('i.category', 'c') ->innerJoin('c.parentCategory', 'h') ->andWhere('h.categoryGroup = :groupCategory') ->setParameter( 'groupCategory', $options['groupCategory'] ); } else { return null; } }, ) );
Таким образом, если $options['groupCategory'] равен 3, функция 'query_builder' вернет null и запрос не будет выполняться.
Вы можете добавить условие внутри функции 'query_builder', чтобы она не выполнялась, если условие options[′groupCategory′]==3несоблюдается.Например:</p><pre><codeclass="language−php">options['groupCategory'] == 3 не соблюдается. Например:</p><pre><code class="language-php">options[′groupCategory′]==3несоблюдается.Например:</p><pre><codeclass="language−php">builder
->add(
'maker',
'entity',
array(
'class' => 'CrbrBundle:CrbrItemMaker',
'property' => 'name',
'required' => false,
'data' => $options['maker'],
'empty_value' => '-- Все --',
'query_builder' => function (EntityRepository $er) use ($options) {
if ($options['groupCategory'] != 3) {
return $er->createQueryBuilder('x')
->innerJoin('x.item', 'i')
->innerJoin('i.category', 'c')
->innerJoin('c.parentCategory', 'h')
->andWhere('h.categoryGroup = :groupCategory')
->setParameter(
'groupCategory',
$options['groupCategory']
);
} else {
return null;
}
},
)
);
Таким образом, если $options['groupCategory'] равен 3, функция 'query_builder' вернет null и запрос не будет выполняться.