public function getQueryString(QueryContext $context)
 {
     $field = $this->field->getName($context);
     $statements = array();
     if (!isset($this->clause)) {
         $statements[] = "{$field} IN (";
         if (!empty($this->range)) {
             $values = array();
             foreach ($this->range as $item) {
                 $values[] = '?';
                 $context->param($item);
             }
             $statements[] = implode(',', $values);
         } else {
             $statements[] = 'NULL';
         }
         $statements[] = ")";
     } else {
         $whereQuery = new WhereQuery(true);
         call_user_func($this->clause, $whereQuery);
         $statements[] = "{$field} IN (";
         $item = $whereQuery->getQueryString($context);
         if (!isset($item)) {
             throw new QueryException("WhereIn Condition build error.");
         }
         $statements[] = $item;
         $statements[] = ")";
     }
     return !empty($statements) ? '(' . implode(' ', $statements) . ')' : null;
 }
 public function getQueryString(QueryContext $context)
 {
     $field = $this->field->getName($context);
     $statements = array();
     if (!$this->notBetween) {
         $statements[] = "{$field} BETWEEN ? AND ?";
     } else {
         $statements[] = "{$field} < ? OR {$field} > ?";
     }
     $context->param($this->range[0]);
     $context->param($this->range[1]);
     return !empty($statements) ? '(' . implode(' ', $statements) . ')' : null;
 }
 public function getQueryString(QueryContext $context)
 {
     $statements = array();
     $field = $this->field->getName($context);
     if (!isset($this->clause)) {
         if ($this->value instanceof Raw) {
             $statements[] = "{$field} {$this->operator} " . $this->value->getValue();
         } else {
             $statements[] = "{$field} {$this->operator} ?";
             $context->param($this->value);
         }
     } else {
         $whereQuery = new WhereQuery($context);
         call_user_func($this->clause, $whereQuery);
         $statements[] = $whereQuery->getQueryString($context);
     }
     return !empty($statements) ? '(' . implode(' ', $statements) . ')' : null;
 }