/** * @param AbstractQueryBuilder $query * * @return AbstractQueryBuilder */ private function applyFilters(AbstractQueryBuilder $query) { //GroupBy is only applicable to Select if ($query instanceof Select) { if (isset($this->groupByFields)) { $query->groupBy($this->groupByFields); } $this->joinRelationsToQuery($this->entity, $query, $this->with); } if (isset($this->where)) { $query->where($this->where); } foreach ($this->orderByFields as $field) { list($fieldName, $order) = $field; $query->orderBy($fieldName, $order); } if (empty($this->with)) { //Limits for joined queries are handled in a different way if (isset($this->limit)) { $query->setMaxResults($this->limit); } if (isset($this->offset)) { $query->setFirstResult($this->offset); } } return $query; }