protected function createQuery(Queryable $queryable) { $qb = $queryable->createQueryBuilder($this->entityClass, 'e'); foreach ($this->filters as $filter) { list($field, $value) = $filter; if ($value === NULL && $field instanceof \Closure) { $field($qb, 'e'); } else { $qb->whereCriteria([$field => $value]); } } foreach ($this->orderBy as $field => $direction) { $qb->autoJoinOrderBy($field, $direction); } return $qb; }