/**
  * @param string $input
  *
  * @return Query
  */
 public function parse($input)
 {
     $queries = new AndQuery();
     foreach (explode(',', $input) as $query) {
         list($property, $value) = explode('=', $query);
         $queries->add(new Equal($property, $value));
     }
     return $queries;
 }
 /**
  * @param string $input
  *
  * @return Query
  */
 public function parse($input)
 {
     $queries = new AndQuery();
     foreach (explode(',', $input) as $query) {
         if (strpos($query, '>=') !== false) {
             list($property, $value) = explode('>=', $query);
             $queries->add(new Expression\GreaterThanEqual($property, $value));
         } elseif (strpos($query, '<=') !== false) {
             list($property, $value) = explode('<=', $query);
             $queries->add(new Expression\LesserThanEqual($property, $value));
         } elseif (strpos($query, '>') !== false) {
             list($property, $value) = explode('>', $query);
             $queries->add(new Expression\GreaterThan($property, $value));
         } elseif (strpos($query, '<') !== false) {
             list($property, $value) = explode('<', $query);
             $queries->add(new Expression\LesserThan($property, $value));
         } elseif (strpos($query, '=') !== false) {
             list($property, $value) = explode('=', $query);
             $queries->add(new Expression\Equal($property, $value));
         } elseif (strpos($query, '!=') !== false) {
             list($property, $value) = explode('!=', $query);
             $queries->add(new Expression\NotEqual($property, $value));
         }
     }
     return $queries;
 }