/** * Retorna um {@link Criteria} para um {@link FilterInterface}. * * @param FilterInterface $filter * @return Criteria */ public function getFilteringCriteria(FilterInterface $filter) { $criteria = Criteria::create(); $columnSearchs = $filter->getColumnSearchs(); $globalSearch = $filter->getGlobalSearch(); $orders = $filter->getOrderings(); $start = $filter->getFirstResult(); $length = $filter->getMaxResults(); // constroi as expressões e os orderings $orderings = $this->getOrderings($filter, $orders); $searchExpr = $this->getExpressionForColumnSearchs($filter, $columnSearchs); $searchAllExpr = $this->getExpressionForGlobalSearch($filter, $globalSearch); // monta o criteria if (null !== $searchAllExpr) { $criteria->andWhere($searchAllExpr); } if (null !== $searchExpr) { $criteria->andWhere($searchExpr); } if (count($orderings)) { $criteria->orderBy($orderings); } $criteria->setFirstResult($start); $criteria->setMaxResults($length); return $criteria; }