Filter/FilterBuilderUpdater.php
public function addFilterConditions(FormInterface $form, $queryBuilder, $alias = null)
    {
        // create the right QueryInterface object
        $event = new PrepareEvent($queryBuilder);
        $this->dispatcher->dispatch(FilterEvents::PREPARE, $event);

        if (!$event->getFilterQuery() instanceof QueryInterface) {
            throw new \RuntimeException("Couldn't find any filter query object.");
        }

        $alias = (null !== $alias) ? $alias : $event->getFilterQuery()->getRootAlias();

        // init parts (= ['joins' -> 'alias']) / the root alias does not target a join
        $this->parts->add('__root__', $alias);

        // get conditions nodes defined by the 'filter_condition_builder' option
        // and add filters condition for each node
        $this->conditionBuilder = $this->getConditionBuilder($form);
        $this->addFilters($form, $event->getFilterQuery(), $alias);

        // walk condition nodes to add condition on the query builder instance
        $name = sprintf('lexik_filter.apply_filters.%s', $event->getFilterQuery()->getEventPartName());
        $this->dispatcher->dispatch($name, new ApplyFilterConditionEvent($queryBuilder, $this->conditionBuilder));

        $this->conditionBuilder = null;

        return $queryBuilder;
    }
public function addFilterConditions(FormInterface $form, $queryBuilder, $alias = null)
    {
        // create the right QueryInterface object
        $event = new PrepareEvent($queryBuilder);
        $this->dispatcher->dispatch(FilterEvents::PREPARE, $event);

        if (!$event->getFilterQuery() instanceof QueryInterface) {
            throw new \RuntimeException("Couldn't find any filter query object.");
        }

        $alias = (null !== $alias) ? $alias : $event->getFilterQuery()->getRootAlias();

        // init parts (= ['joins' -> 'alias']) / the root alias does not target a join
        $this->parts->add('__root__', $alias);

        // get conditions nodes defined by the 'filter_condition_builder' option
        // and add filters condition for each node
        $this->conditionBuilder = $this->getConditionBuilder($form);
        $this->addFilters($form, $event->getFilterQuery(), $alias);

        // walk condition nodes to add condition on the query builder instance
        $name = sprintf('lexik_filter.apply_filters.%s', $event->getFilterQuery()->getEventPartName());
        $this->dispatcher->dispatch($name, new ApplyFilterConditionEvent($queryBuilder, $this->conditionBuilder));

        $this->conditionBuilder = null;

        return $queryBuilder;
    }
public function addFilterConditions ( FormInterface $ form , $ queryBuilder , $ alias = null ) { // create the right QueryInterface object $ event = new PrepareEvent ( $ queryBuilder ) ; $ this -> dispatcher -> dispatch ( FilterEvents :: PREPARE , $ event ) ; if ( ! $ event -> getFilterQuery ( ) instanceof QueryInterface ) { throw new \ RuntimeException ( "Couldn't find any filter query object." ) ; } $ alias = ( null !== $ alias ) ? $ alias : $ event -> getFilterQuery ( ) -> getRootAlias ( ) ; // init parts (= ['joins' -> 'alias']) / the root alias does not target a join $ this -> parts -> add ( '__root__' , $ alias ) ; // get conditions nodes defined by the 'filter_condition_builder' option // and add filters condition for each node $ this -> conditionBuilder = $ this -> getConditionBuilder ( $ form ) ; $ this -> addFilters ( $ form , $ event -> getFilterQuery ( ) , $ alias ) ; // walk condition nodes to add condition on the query builder instance $ name = sprintf ( 'lexik_filter.apply_filters.%s' , $ event -> getFilterQuery ( ) -> getEventPartName ( ) ) ; $ this -> dispatcher -> dispatch ( $ name , new ApplyFilterConditionEvent ( $ queryBuilder , $ this -> conditionBuilder ) ) ; $ this -> conditionBuilder = null ; return $ queryBuilder ; }
Build a filter query.

@param  FormInterface $form
@param  object        $queryBuilder
@param  string|null   $alias

@return object filter builder

@throws \RuntimeException
Build a filter query .