public function search(Criteria $criteria)
{
$qb = $this->repository->createQueryBuilder();
$this->buildWhereClause($qb, $criteria);
$qb->select();
if ($criteria->getOrderBy()) {
$qb->sort($criteria->getOrderBy(), $criteria->getOrderDir());
}
if ($criteria->getOffset()) {
$qb->skip($criteria->getOffset());
}
if ($criteria->getLimit()) {
$qb->limit($criteria->getLimit());
}
$cursor = $qb->getQuery()->execute();
$results = array();
foreach ($cursor as $value) {
$results[] = $value;
}
return $results;
}