public function testWhere()
 {
     $query = new Query();
     $query->setMappingConfig($this->config);
     $query->from('Oro\\Bundle\\DataBundle\\Entity\\Product');
     $query->where('or', 'all_data', '=', 'test', 'string');
     $queryParams = $query->getOptions();
     $this->assertEquals('or', $queryParams[0]['type']);
     $this->assertEquals('all_data', $queryParams[0]['fieldName']);
 }
Example #2
0
 public function testWhere()
 {
     $query = new Query();
     $query->setMappingConfig($this->config);
     $query->from('Oro\\Bundle\\DataBundle\\Entity\\Product');
     $query->where('or', 'all_data', '=', 'test', 'string');
     $whereExpression = $query->getCriteria()->getWhereExpression();
     $this->assertEquals('string.all_data', $whereExpression->getField());
     $this->assertEquals(Comparison::EQ, $whereExpression->getOperator());
     $this->assertEquals('test', $whereExpression->getValue()->getValue());
 }
Example #3
0
 /**
  * Parse where statement
  *
  * @param Query  $query
  * @param string $keyWord
  * @param string $inputString
  *
  * @return string
  */
 private function where(Query $query, $keyWord, $inputString)
 {
     $typeWord = $this->getWord($inputString);
     if (!in_array($typeWord, $this->types)) {
         $typeWord = Query::TYPE_TEXT;
     } else {
         $inputString = $this->trimString($inputString, $typeWord);
     }
     //parse field name
     $fieldName = $this->getWord($inputString);
     $inputString = $this->trimString($inputString, $fieldName);
     //parse operator
     $operatorWord = $this->getWord($inputString);
     // check operator
     if (!in_array($operatorWord, $this->typeOperators[$typeWord])) {
         throw new \InvalidArgumentException('Type ' . $typeWord . ' does not support operator "' . $operatorWord . '"');
     }
     $inputString = $this->trimString($inputString, $operatorWord);
     if (in_array($operatorWord, array(Query::OPERATOR_IN, Query::OPERATOR_NOT_IN))) {
         $fromString = $this->getWord($inputString, ')');
         $inputString = $this->trimString($inputString, $fromString . ')');
         $fromString = str_replace(array('(', ')'), '', $fromString);
         $value = explode(', ', $fromString);
     } else {
         if (substr($inputString, 0, 1) == '"') {
             $inputString = substr($inputString, 1, strlen($inputString));
             $value = $this->getWord($inputString, '"');
             $inputString = $this->trimString($inputString, $value . '"');
         } else {
             $value = $this->getWord($inputString);
             $inputString = $this->trimString($inputString, $value);
         }
     }
     $query->where($keyWord, $fieldName, $operatorWord, $value, $typeWord);
     return $inputString;
 }