/**
  * @param FilterInterface $filter
  * @param FormInterface $form
  * @param QueryBuilder $qb
  * @param string $alias
  */
 public function handleForm(FilterInterface $filter, FormInterface $form, QueryBuilder $qb, $alias)
 {
     $data = $form->getData();
     if (!$data) {
         return;
     }
     $columns = $filter->getFullAttributeReferences($alias);
     if (!empty($data[DateRangeType::START_NAME])) {
         $startDate = $data[DateRangeType::START_NAME];
         $dql = [];
         foreach ($columns as $column) {
             $uid = uniqid('fromDate');
             $dql[] = "{$column} >= :{$uid}";
             $qb->setParameter($uid, $startDate);
         }
         $qb->andWhere(implode(' OR ', $dql));
     }
     if (!empty($data[DateRangeType::END_NAME])) {
         $endDate = $data[DateRangeType::END_NAME];
         $dql = [];
         foreach ($columns as $column) {
             $uid = uniqid('endDate');
             $dql[] = "{$column} <= :{$uid}";
             $qb->setParameter($uid, $endDate);
         }
         $qb->andWhere(implode(' OR ', $dql));
     }
 }
 /**
  * @param FilterInterface $filter
  * @param FormInterface   $form
  * @param QueryBuilder    $qb
  * @param string          $alias
  */
 public function handleForm(FilterInterface $filter, FormInterface $form, QueryBuilder $qb, $alias)
 {
     $data = $form->getData();
     if (!$data) {
         return;
     }
     $dql = [];
     foreach ($filter->getFullAttributeReferences($alias) as $column) {
         $uid = uniqid('text');
         $dql[] = "{$column} LIKE :{$uid}";
         $qb->setParameter($uid, '%' . $data . '%');
     }
     $qb->andWhere(implode(' OR ', $dql));
 }
 /**
  * @inheritDoc
  */
 public function getFormOptions(FilterInterface $filter, QueryBuilder $qb, $alias)
 {
     if (isset($this->formOptions['choices'])) {
         return $this->formOptions;
     }
     $choices = [];
     foreach ($filter->getFullAttributeReferences($alias) as $column) {
         $qb = clone $qb;
         $qb->select("{$column} AS __value")->groupBy($column);
         foreach ($qb->getQuery()->getArrayResult() as $result) {
             $value = $result['__value'];
             $choices[$value] = $value;
         }
     }
     return array_merge($this->formOptions, ['choices' => $choices]);
 }