/**
  * Validate search
  * 
  * @param RequestInterface $request
  * @param array            $errors
  */
 protected function validateSearch(RequestInterface $request, array &$errors)
 {
     foreach ($request->getSearch() as $field => $value) {
         if (!$this->schema->hasField($field)) {
             $errors[] = sprintf('Search cannot be applied to non-existent field "%s"', $field);
             continue;
         }
         if (!$this->schema->getField($field)->isSearchable()) {
             $errors[] = sprintf('Field "%s" is not searchable', $field);
         }
         if (empty($value)) {
             $errors[] = sprintf('Search string of field "%s" is empty', $value, $field);
         }
     }
 }
 /**
  * Process order
  * 
  * @param Criteria         $criteria
  * @param RequestInterface $request
  */
 protected function processSearch(Criteria $criteria, RequestInterface $request)
 {
     foreach ($request->getSearch() as $field => $value) {
         $criteria->andWhere(Criteria::expr()->contains($field, $value));
     }
 }