/** * Create query by filter * * @param FilterTestable $filter * @return BuilderInterface */ public function createQueryByFilter(FilterInterface $filter) { $query = $this->createQuery(); if ($filter->getIds()) { $query->inWhere('id', $filter->getIds()); } return $query; }
/** * Filter query post processing * * @param BuilderInterface $query * @param FilterInterface $filter */ protected function filterQueryPost(BuilderInterface $query, FilterInterface $filter) { if ($filter->getLimit()) { $query->limit($filter->getLimit()); } if ($filter->getOffset()) { $query->offset($filter->getOffset()); } if ($filter->getGroupBy()) { $query->groupBy($filter->getGroupBy()); } if ($filter->getOrderBy()) { $query->orderBy($filter->getOrderBy()); } }
/** * Get unique key from filter * * @param FilterInterface $filter * @return string */ public function getUniqueKeyFromFilter(FilterInterface $filter) { $data = $filter->toArray(); $data['class'] = get_class($filter); return md5(json_encode($data)); }