Пример #1
0
 /**
  * Applies filtering to the query and calls back the custom filtering function, if required.
  *
  * @param QueryBuilder $qb The query builder
  * @param ManagerFilter $filter The query filter
  */
 protected function applyFiltering(QueryBuilder $qb, ManagerFilter $filter)
 {
     if ($filter->getFilter() !== null && $filter->getFilterField() !== null) {
         $aOrWhereFields = array();
         if (is_array($filter->getFilterField())) {
             foreach ($filter->getFilterField() as $field) {
                 $aOrWhereFields[] = "LOWER(q." . $field . ") LIKE :filter";
             }
         } else {
             $aOrWhereFields[] = "LOWER(q." . $filter->getFilterField() . ") LIKE :filter";
         }
         foreach ($aOrWhereFields as $or) {
             $qb->orWhere($or);
         }
         $qb->setParameter("filter", "%" . strtolower($filter->getFilter()) . "%");
     }
     if ($filter->getFilterCallback() !== null) {
         call_user_func($filter->getFilterCallback(), $qb);
     }
 }